3
私はOpenGL ES 2.0とGLSLシェーダを使用しており、FBOとRenderbuffer(別名オフスクリーンレンダリング)を使用しています。
30 fpsで問題なく動作します。
しかし、glReadPixelsまたはglcopyteximage2dを使用すると、8 fpsになります。
私のようなものでした:
FBReadを使用したglReadPixelsの速度が遅すぎる
glBindFramebuffer(GL_FRAMEBUFFER, frameBuf);
//DRAW something
glReadPixels(...); //HERE
glBindFramebuffer(GL_FRAMEBUFFER, 0);
は私が速度を向上させることができ、とにかくありますか?私はFBOを使用せず、同じパラメータでglReadPixelsを使用すると、15 fpsとなり、FBOを使用すると速度が向上すると思いますか?
'glReadPixels()'などを使って、オフスクリーンレンダリングをスクリーンにコピーしていますか?サーフェスにレンダリングしている場合は、直接(またはOpenGL ESを使用することはできません。 – Bojangles
はい、私はglslシェーダを使用しています。フラグメントシェーダが出力するものは何でも、私は何かを計算できるようにフレームバッファにアクセスして読み込む必要があります。私の目標は、フレームバッファをオフスクリーンで読み込んで何かしてから、最後の画面を描画することです。 – user2168
したがって、2つのテクスチャを作成し、FBOにバインドし、もう1つを入力テクスチャとしてバインドします。次に、FBOを2番目のバウンドに切り替え、1番目をテクスチャとして使用します。コピーしないでください。 (もしESがそれをサポートしていれば、FBOとテクスチャの両方にバインドすることもできますし、読み込むテクスチャを統一して決定し、カラー書き込みを無効にすることもできますPingとPongの間に「何か他のもの」を置くと、通常は "まだ動作しますが"、NV_texture_barrierなどのようにデータが再び読み込まれる前にキャッシュが書き出されるように同期する必要があります。 – Damon