3GとglFramebufferTexture2DOESとglCopyTexImage2D

 glFramebufferTexture2DOESを使って、3Gでテクスチャを生成したのですが、上手く行かない事がありました。
 一つのテクスチャをフレームバッファと結びつけて、毎フレーム生成する場合は上手く行きます。


 ですが、どうもそれ以外では上手く行かない事が起こる事があります。
 まるでテクスチャとフレームバッファが結びついていないような結果になってしまいます。
 描画のタイミングも絡んでいるようで、描画と描画の間のフレーム数で上手く行ったり、
少しフレーム数を変えると上手く行かなかったり。


 もちろん、3GSやシミュレータでは上手く行きますから、どうも3Gの特性に引っかかっているようです。
 良く判りませんが、OpenGLES 2.0と何か関わりでもあるでしょうか。


 ま、かなり困りました。(笑)
 微妙に上手く行ったりするもので、諦めるまでに少々時間がかかってしまいました。


 で、代わりになりそうなものを探した所、見つかったのが、glCopyTexImage2D。
 フレームバッファの内容をテクスチャにコピーする関数です。


 glFramebufferTexture2DOESでテクスチャに結びつけたフレームバッファに描画する代わりに、
いつも描画しているフレームバッファに描画し、その結果をglCopyTexImage2Dで、
テクスチャにコピーするという方法です。


 この方法で、安定して3Gでもテクスチャを生成できるようになりました。