0

私たちが知っているように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 は受け入れられません。

4

2 に答える 2

1

データ形式の変換を停止する方法を知っている人はいますか?

ああ、変換を必要としないデータ形式を読み取ることによって。通常、画面上のフレームバッファは BGRA としてフォーマットされます。別のものが必要な場合は、最初にデータを変換する必要があります。

期待される形式のテクスチャ/レンダーバッファの添付ファイルで FBO を使用して、それにレンダリングすることができます。

于 2013-01-18T14:07:49.543 に答える
0
于 2013-01-18T19:11:31.237 に答える