問題タブ [glx]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
877 参照

c++ - ウィンドウ システム (GLX) を使用したバッファーのスワップとクリア バック

バック バッファとフロント バッファを交換すると、バック バッファの内容が未定義になります。GLX、EGL、WGLなどの「ウィンドウシステム」を使用して定義したいと思います。OpenGL (glClear) などの「ネイティブ」レンダラーを使用することは、私のバックアップ プランです。わざわざ言及しないでください。バックアップの理由は、ネイティブのレンダリング コンテキストを台無しにしたくないからです。この質問では X/GLX に固執しますが、他の環境でそれを行う方法を説明したい場合は、先に進んでください。

Xlib のドキュメント ( http://www.x.org/docs/X11/xlib.pdf ) から、「背景ピクセル」を使用してウィンドウをクリアするための操作 XClearWindow を見つけました (ちなみに素晴らしい名前です... ではありません)。

  1. XClearWindow はフロント/バックまたは両方のバッファをクリアしますか? バック バッファは理にかなっていると思いますが、Xlib ドキュメントだけでは理解できません...そして、トリプル バッファについて誰かが尋ねたとしても、それは私ではありませんでした!
  2. OpenGL レンダリングと同期していますか、それとも操作の前に glxWaitGL を呼び出すなどして自分自身を同期する必要がありますか?
  3. コマンドがブロックされていますか、つまり、完了するまで停止しますか? 実装依存?

ウィンドウ システム (GLX) を使用してスワップ後にバック バッファーをクリアする方法に関するその他の提案が適用されます。

乾杯!

0 投票する
2 に答える
1060 参照

opengl - 「glwMDrawingAreaWidgetClass」の複数定義

IRIX で書かれたアプリケーションを Linux に移植しています (そして、AIX への移植に成功しました (数年前))。私が見つけた問題の 1 つは、glwMDrawingAreaWidgetClass が Linux でサポートされていないことでした (glwDrawaingAreaWidgeClass no 'M' を使用してください)。なので切り替えました。Ubuntu 10.10 でアプリをビルドしました。今、私は14.04でビルドしようとしています(そして15.10でも試しました)。しかし、次のエラーが発生します。

glwMDrawingAreaWidgetClass の複数定義。

私はこれをダース(またはそれ以上)のファイルで取得します。事は..私はそれを使用していません。

だから良いデバッグスタイルで私は尋ねました:何が変わったのですか?メイクファイルは同じで、ファイルも同じです。ライブラリまたはコンパイラ (G++) である必要があります。

このエラーを見つけるために、どこでも(Google検索)調べました。私は解決策(または問題さえ)を見つけていません。

誰もこれに気づきましたか?ライブラリの問題だと思います。
次のライブラリを使用してリンクしています:...

-lxvw -ldot -lmath -lXm -lXt -lXext -lX11 -lglut -lGLU -lGL -lGLw -lm -lpthread.

最初の3つは私のものです。glut、GLU、GL、GLwを取り除いてみました。違いがないか、リンクできないかのどちらかです。GLwだと思います。

静的にリンクしています。

ありがとう

0 投票する
2 に答える
1908 参照

c - GLX 垂直同期イベント

任意のファイル記述子と [select | select | 世論調査 | それをepoll]する。

通常、私が正しければ、 glXSwapBuffers() はプロセスをブロックしないので、次のようなことができます:

そのため、vsync イベントがいつ発生するかに関係なく、任意のイベントをトリガーし、同時に X 描画関数と vsync に GL のみを使用する場合の引き裂き効果を回避できます。

libdrm は私を助けてくれますか? より一般的な質問は次のとおりです。

では、vsync イベントをキャッチするためにどの fd を使用する必要があり、発生したイベントが vsync イベントであることをこの fd で確認する方法を教えてください。

0 投票する
1 に答える
209 参照

c++ - GLX コンテキスト フレームバッファの読み取り

GLX コンテキストからピクセルを読み込もうとしています。これがコンテキストを作成する方法です

次に、単純な三角形をレンダリングしていて、そのバッファを glReadPixels で読み取りたいと考えています。それを行う可能性はありますか?

そして、私は電話しています

0 投票する
1 に答える
122 参照

debian - GLX アプリのデバッグ - 遅いウィンドウが再描画されない

OpenGL アプリケーションを Linux (Debian Jesse コア、GLX、X11 および Xfree86、Mesa 10.3.2 経由の GL 3.0 を使用) に移植しています。私は完全に理解していないレンダリングの問題 (以下に説明があります) で立ち往生しており、使用方法を知っているデバッグ方法を使い果たしました。私の質問は、これをデバッグするにはどうすればよいですか? パフォーマンスを検査するために使用できるツール、確認できるログ ファイル、インストールしてブレークポイントを設定できる開発ライブラリなどはありますか?

症状:

  • ウィンドウがインスタンス化されると、ウィンドウ フレームは描画されますが、ウィンドウの内容は描画されません (ウィンドウにデスクトップの背景が表示されます)。
  • タイトル バーをクリック アンド ドラッグしてウィンドウを移動するのが遅い
  • アプリを閉じるには数秒かかりますが、ウィンドウが破棄される直前の非常に短い瞬間に、正しい画面出力がウィンドウに表示されます
  • ウィンドウのサイズを非常に小さくしても、動きの鈍さや表示の問題は改善されません
  • topCPUの最大使用率はわずか2%(ほとんどの場合、0.3〜0.7%の範囲)であり、メモリ使用量は増減しますが安定した範囲にとどまり、残りのグラフィカルアプリは少し遅れますが、残りのシステムはかなりきびきびしています。からのスナップショットは次のtopとおりです。

私が試したこと:

  • Windows でも同様の問題が発生しました。この問題は、null ウィンドウ ハンドルをSwapBuffers呼び出しに渡すことでした。gdb呼び出しでブレークポイントを使用して実行しglXSwapBuffers、同じことが現在発生していないことを確認しました。
  • およびインスタンスが null ではなく、変更されていないgdbことを確認して、ウィンドウ作成コードをトレースします。Display*Window
  • イベントの再描画と非再描画ExposeConfigureNotify再描画コードを削除しても、問題に影響はないようです。
  • 念のため、GLEW を使用していますが、コンテキストの作成には使用していません。glXCreateContextAttribsARBviaへの関数ポインタを取得しますglXGetProcAddress
0 投票する
2 に答える
1179 参照

c++ - OpenGL 関数を手動で呼び出す

私は、必要なときに OpenGL 関数を呼び出すのに役立つ OpenGL 関数ローディング ライブラリの作成に取り組んでいます。

getProcAddressglX を使用する関数があります。

これは、OpenGL 関数のアドレスを返します。sを使用しないと奇妙なコンパイラ エラーが発生するreinterpret_castため、エラーが発生します。

次に、ヘッダー ファイルで gl* 関数プロトタイプを定義します。

WhereGLenumは、別のヘッダー ファイルで列挙型として定義されています。次に、クラスで関数ポインターを宣言します。

そして、initI と呼ばれる関数で次のことを行います。

関数自体はgetProcAddress正常にコンパイルされますが、上記のコード行はコンパイルされません。GCC は次のコンパイラ エラーをスローします。

そして、この種のコンパイラ エラーに対処する方法がわかりません。を使用しない限り、これは関数ポインターであり、関数自体ではないため、意味がありません()。ここで何が問題なのかよくわかりません。それが私の側からのものであろうとGCCのものであろうと。それははっきりしていません。ポインターとボイドをいじってみましたが、すべて無駄で、同じエラーメッセージが表示されます。ここで何が起こっているのか、OpenGL関数を適切に呼び出す方法を知っている人はいますか?

0 投票する
1 に答える
123 参照

opengl - GLX アニメーションが予想より遅い

XCB と openGL を使用するアプリケーションがあります。最初に、次の属性を持つフレームバッファ構成を選択します。

固定時間 (1 秒) 続く単純なアニメーションを実行しますが、画面に表示するにはもっと時間がかかります (約 5 秒)。進行状況の値を表示するためにログを追加した後、実際のループは 1 秒しか続かないことがわかりました。

本当に何が起こっているのかわかりません。各反復glXSwapBuffers()で描画用のopenglコマンドをキューに入れ、ループが終了したときにそれらのほとんどがまだ実行されていないと思います。

のパラメータを微調整してusleep()も、アニメーションの滑らかさが低下するか、アニメーションが大幅に遅くなる以外には何の影響もありません。シングル バッファリングに切り替えると、この問題はなくなります (ただし、シングル バッファリングに関連する問題が発生します)。

私は何か正しいことをしていないようですが、何がわかりません。

0 投票する
2 に答える
791 参照

python - glXChooseFBConfig と ctypes モジュールで OpenGL を初期化するには?

tkinter ウィンドウで簡単な OpenGL アニメーションを作成したいと考えています。不必要な依存関係を含めたくないので、ctypes を使用してすべてをゼロから作成しています。これまでのところ、私はこれを持っています:

このコードがこのエラーを生成するのはなぜですか?