OpenGL関数は、あたかも同期して動作しているかのように定義されています。しかし、レンダリング関数(とその他)は、しばしばGPUによって非同期に実行されます。 OpenGLはこれを効果的に隠すでしょう:あなたが操作の結果を必要とする何かを行うと(レンダリングされたフレームバッファからの読み込みなど)、OpenGLはGPUがそのポイントに達するまでCPUの動作を停止します。OpenGLの操作が終了したかどうかを確認する方法はありますか?
CPUは基本的にGPUが完了するまでブロックするので、機能はありますがパフォーマンスはほとんどありません。特定の操作が完了したかどうかを判断する方法があるので、従属操作があまりCPUをブロックすることなく実行されることを知ることができますか?
大きな質問ですが、同時に質問と回答の両方が大丈夫ですか? ;)また、このような同期チェックでパイプラインに不要なオーバーヘッドが追加されることはありませんか? –
@MichaelIV: "*しかし、同時に尋ねると答えるのは大丈夫ですか?"はい。これは、あなたが質問をするときに、質問する前にすぐに答えることのできるボックスが底にある理由です。 「不要なオーバーヘッド」を加えることについては、フェンスはかなり軽量であると予想されます。内部ドライバプロセスは常にフェンスを使用します。バッファオブジェクトなどで完了した時点を知ることができます。 –