OpenGL の PBO について読んだところ、競合状態に関する質問がありました。
次の例を見てみましょう。2 つの PBO があり、それらのピクセル データを順番にテクスチャ オブジェクトに転送したいと考えています。そのため、1 つの PBO の非同期ピクセル転送を開始すると、ピクセル データがバックグラウンドで転送されている間に、すぐに CPU で別の処理を実行できます。次に、2 番目の PBO でいくつかのピクセル操作を行います。それが完了したら、ピクセルを 2 番目の PBO からテクスチャ オブジェクトに転送します。しかし、最初の PBO の転送がまだ完了していない場合はどうなるでしょうか? この最初の例のようです: http://www.songho.ca/opengl/gl_pbo.html
index = (index + 1) % 2;
nextIndex = (index + 1) % 2;
glBindTexture(GL_TEXTURE_2D, textureId);
glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, pboIds[index]);
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, WIDTH, HEIGHT, GL_BGRA, GL_UNSIGNED_BYTE, 0);
glTextSubImage2D() はすぐに戻り、最初の PBO のデータが GPU に転送されている間に 2 番目の PBO の作業を開始できます。最初の転送が完了する前に glTexSubImage() (2 番目の PBO のピクセル データを転送する必要があります) に到達した場合はどうなりますか? CPU ストール サイクルが発生しますか?