glClientWaitSync関数を使用して誤解しています。 OpenGLの4.5::私はうまくOpenGLのウィキを理解していればフェンシングとの同期
glDraw(...);
sync = glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0);
glDraw(...);
glClientWaitSync(sync, GL_SYNC_FLUSH_COMMANDS_BIT, 1000000000);
glDeleteSync(sync);
、我々は2例
最初のケースを持っている:
は、私はそのような何かを使用してい認めるこの場合、glClientWaitSync後、我々は、 wikiに書いてあるので最初のドローだけが実行されていることを確認してください:
OpenGL 4.5では、このフラッシュは特別に行われます。初めて特定の同期オブジェクトで待機していて、同期オブジェクトを作成したのと同じコンテキストで待機している場合は、同期オブジェクトの直後に発行したかのように動作します。そのため、同期オブジェクトの作成後に他のOpenGLコマンドを発行した場合、それらはフラッシュされません。
2番目のケース:OpenGL 4.4またはそれ以下:この関数はglFlush関数と "グローバルに"同じ動作をするため、両方の描画が実行されていると確信していますか? こうすれば、すべてのコマンドバッファがフラッシュされた場合に、OpenGL 4.4でラウンドロビン方式で永続マッピングをどのように実際に使用するのですか?
私がよく理解していれば、4.4の方法でフラッシュすると、フェンスが完了する前にすべてのコマンドが確実に終了し、後に続くコマンドが開始されます。 4.5の方法では、後のものは必須ではありません。 –