私たちが知っているようにglReadPixels()、パイプラインをブロックし、CPU を使用してデータ形式を変換します。特に、深さの値をシステム RAM に読み出したい場合はそうです。
glReadPixels()Songho が提供する PBO を試してみましたが、param ofが GL_BGRA に設定されている場合にのみ有用であることがわかりました。
- param で PBO を使用すると
GL_BGRA、読み取り時間はほぼ 0.1ms で、CPU 使用率は 4% です。 - param を に変更すると
GL_RGBA、CPU 使用率が 50% で 2ms と表示されます。
やってみると同じGL_DEPTH_COMPONENTです。どうやら速度の低下は変換によって引き起こされているようです。データ形式の変換を停止する方法を知っている人はいますか?
私のプログラムでは、深度値を読み取り、1 秒以内に 16*25 回計算する必要があるため、2ms は受け入れられません。