1 時間以上答えを探した後 (Munshi の「OpenGL ES 2.0 プログラミング ガイド」を試したり、Apple のドキュメントを検索したり、StackOverflow を検索したり)、glReadPixels を機能させるにはまだ途方に暮れています。私は非常に多くの異なる方法を試しましたが、私が得た最良の結果は変動する (したがって間違った) 結果です。
クワッドがシェーダーで画面にレンダリングされる単純なケースを設定し、gl_FragColor を純粋な赤に手動で割り当てたので、画面に変動はまったくないはずです。次に、前に次のコードのようなものを試しますpresentRenderbuffer:
GLubyte *pixels = (GLubyte *)malloc(3);
glReadPixels(100, 100, 1, 1, GL_RGB, GL_UNSIGNED_BYTE, pixels);
NSLog(@"%d", (int)pixels[0]);
free(pixels);
基本的に、(100, 100) で単一のピクセルを読み取り、その赤の値を読み取ろうとします。これは 1 または 255 であると予想されます。代わりに、1522775、3587、および 65536 のような値を取得しますが、画面上の画像変わることはありません。Macでこのようなことをしたところ、うまくいきましたが、何らかの理由でこれをiOSで動作させることができません。glDrawArrays()
への呼び出しの後と呼び出しの前に、上記のステートメントがあります (そして、インターネットで見つけた多くのバリエーションを試しました) presentBuffer:
。フレームバッファの情報について glGetIntegerv() を照会することにより、読み取りタイプと読み取り形式のすべてのケースを処理する「OpenGL ES 2.0 プログラミング ガイド」の方法を試してみました。
何か案は?きっと誰かが「検索機能を使え」と言うだろうが、私は真剣にそれを使い果たしてしまい、それ以上先に進むことができない. ご協力いただきありがとうございます!