3

私はopenGLES2.0とGLSLシェーダーを使用しており、Renderbuffer(別名オフスクリーンレンダリング)を使用してFBOで作業しています。30fps
で正常に動作します。 しかし、glReadPixelsまたはglcopyteximage2dを使用すると、8fpsに低下します。 私は次のようなことをしました:


glBindFramebuffer(GL_FRAMEBUFFER, frameBuf);
//DRAW something
glReadPixels(...); //HERE
glBindFramebuffer(GL_FRAMEBUFFER, 0);

とにかく速度を上げることができますか?つまり、FBOを使用せず、同じパラメーターでglReadPixelsを使用すると、15 fpsで動作し、FBOを使用すると速度が向上すると思いましたか?

4

1 に答える 1

5

glGet***(関数のいずれかを使用して)OpenGLデータを取得するのは悪い(非常に悪い)方法です。テクスチャまたはその一部を画面/他のテクスチャにコピーするには、クワッドで描画できます。論理処理のためにピクセルデータが必要な場合は、フレームバッファをできるだけ小さくして、必要な場合にのみ読み取ることをお勧めします。

于 2011-12-28T11:54:14.957 に答える