2

オフスクリーン バッファに何かをレンダリングし、 を呼び出してピクセルを「CPU メモリ」に読み込む必要がありますglReadPixels。私のコードは、Windows で通常の OpenGL にコンパイルするとうまく動作しますが、iOS の OpenGL ES 2.0 で実行するには、GL_ALPHA(またはGL_LUMINANCE) テクスチャをGL_RGBA1 つに置き換える必要がありました。

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA,  width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);

それ以外の

glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA,  width, height, 0, GL_ALPHA, GL_UNSIGNED_BYTE, NULL);

8 ビット テクスチャでコードを実行できませんでした。

しかし、このレンダリングではフルカラーは必要ないため、ピクセルごとに余分な 3 バイトが無駄になります。もう一度試す前に、ここで私の質問:

8 ビット テクスチャへのオフスクリーン レンダリングに成功し、バイトを CPU メモリに読み戻すことに成功した人はいますか? それはまったく可能ですか?

4

2 に答える 2

2

glRenderbufferStorage フォーマットを GL_R8_EXT に設定し、glReadPixels/glTexImage2D フォーマットを GL_RED_EXT に設定します。

http://www.khronos.org/registry/gles/extensions/EXT/EXT_texture_rg.txt

http://developer.apple.com/library/ios/#releasenotes/General/WhatsNewIniPhoneOS/Articles/iOS5.html#//apple_ref/doc/uid/TP30915195-SW47

編集: 私はこれをテストして動作しますが、A5 以上 (iPad2/3/4/mini、iPhone4S/5、iPod touch 第 5 世代) でのみ動作します。残念ながら、最も必要とされる A4 以前のモデル (iPhone4、iPod touch 第 4 世代、3GS、iPad1) では利用できません。

于 2012-10-31T05:47:13.127 に答える