質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

OpenGL

OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

SSH

SSH(Secure Shell)は、セキュアチャネルを通してデータを交換するためのネットワークプロトコルです。リモートサーバーへのコマンド実行やファイル転送を行う時に一般的に使用されます。

Q&A

解決済

1回答

4406閲覧

ssh接続した先で、OpenGLプログラミングの出力(ディスプレイ表示)がされない

yochun02

総合スコア76

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

OpenGL

OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

SSH

SSH(Secure Shell)は、セキュアチャネルを通してデータを交換するためのネットワークプロトコルです。リモートサーバーへのコマンド実行やファイル転送を行う時に一般的に使用されます。

0グッド

0クリップ

投稿2018/06/05 01:08

前提・実現したいこと

現在、ノートpcから、リモートで別のpcサーバにあるOpenGLを使ったc言語ソースの実行をしようとしています。どちらのOSもubuntu16.04です。
ssh接続はできてソースの改変などの遠隔操作・コンパイルも可能ですが、いざ実行しようとしたところ以下のようなメッセージが表示されて、結果(ディスプレイ上に正方形描画)が反映さません。
Linuxに疎く、どなたかご教示ください。

発生している問題・エラーメッセージ

特に他に何も操作していない場合、ファイルの実行後

freeglut (./hoge): failed to open display ``

該当のソースコード

./hoge.c #include <GL/glut.h> /* 再描写時に実行される関数*/ void display(void) { /* 画面全体を指定した色で塗りつぶす */ glClear(GL_COLOR_BUFFER_BIT); /* まだ実行されていない命令をすべて実行 */ glFlush(); } int main(int argc, char **argv){ glutInit(&argc, argv); /* ウィンドウの位置とサイズを指定 */ glutInitWindowPosition(100, 100); glutInitWindowSize(400, 400); /* ウィンドウを生成 */ glutCreateWindow("test"); /* 背景色を指定: 白 */ glutInitDisplayMode(GLUT_RGBA); glClearColor(1.0, 1.0, 1.0, 1.0); /* 画面を再描写するときに実行される関数を指定 (初期化、ウィンドウサイズ変更時など) */ glutDisplayFunc(display); /* ウィンドウが閉じられるまでループ */ glutMainLoop(); return 0; }

試したこと

ssh接続時に-Xオプションをつけると以下のようなエラーになりました。

X Error of failled request: BadBalue(integer parameter out of range for operation)
Major opcodee of failed request: 154(GLX)
Minor opcode of failed request: 24(X_GLXCreateNewContext)
Value in failedrequest: 0x0
Serial numger of failed request: 29
Current serial nubverin out put stream: 30

また、ssh接続先で、
$ export DISPLAY=:0.0
と入れると、ssh接続側のpcにちゃんと結果が反映されます。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

すみません。自己解決しました。
原因は、サーバ側のドライバに含まれるlibGL.soにより生成されるGLXコマンドがクライアント側で解釈されないためでした。(積んでいるドライバが異なっていたため)
【解決方法】
クライアント側で動かす実行ファイルをmesaのlibGL.soを使用するように環境変数を設定する。具体的には
$ export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/mea/libGL.so.1.2.0
としてからファイル実行で(非常に重たいですが)クライアント側でディスプレイに表示させることが出来ました。

投稿2018/06/05 08:48

yochun02

総合スコア76

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問