XWindow Drawable、Pixmap、および XRender を使用して画面に何かを描画しています。時々ちらつきがあることがわかります。VBLANK を待つ方法はありますか? 私はすでにたくさんのグーグルで、森の中でコインを探しているような気がします.
関係する OpenGL はありません。Linux(Ubuntu)です。(nano)sleep() を使用することもできますが、いつ描画するかを知る必要があります。
同期とダブルバッファリングに対する優れた高レベルのインターフェイスがあるため、GLXを使用するのが最も簡単なソリューションであることがわかりました。GLX は OpenGL ではなく、X 拡張であることに注意してください。SwapBuffersが(何らかの奇妙な理由で)それを要求するため、ダミーのOpenGLコンテキストが必要ですが、それだけです。
なんらかの理由で GLX を使用せずに実行したい場合は、X Double Buffer Extension (DBE) を使用してダブル バッファーを作成し、X Syncronization Extension を使用して手動でディスプレイに同期することで実行できます。私自身はそうしたことはありませんが、XSyncListSystemCounters を呼び出して好みのものを見つけることができるはずです (適切な初期化の後!):
XSyncListSystemCounters は、ディスプレイがサポートするシステム カウンターの配列へのポインターを返します。
ただし、難しい方法については、自分自身でこれ以上見つけることはできません。幸運を。