glCopyTexImage2D によるフレームバッファのコピー

glCopyTexImage2D を使うと、フレームバッファフレームバッファオブジェクトからその内容をコピーできます。
コピーした内容を新しいテクスチャとして使うという事ができて便利です。


フレームバッファオブジェクトを毎フレームコピーする場合には問題なかったのですが、時々コピーすると問題が起こりました。
3GSでは問題ないのですが、3Gでは上手く描画されない。


そこで、フレームバッファの方に描画して、それをコピーする方式にした所、3Gでも問題なく描画!
ところが、今度は今度はiPod touch 4Gで問題が。
iPod touch 4Gは、フレームバッファオブジェクトに描画したものをコピーすると上手く行きました。


まとめると、下のようになりました。
glCopyTexImage2D フレームバッファからのコピー
3G ○
3GS ○
iPod touch 4G ×


glCopyTexImage2D フレームバッファオブジェクトからのコピー
3G ×
3GS ○
iPod touch 4G ○


どうやらretinaが鍵のようです。
そこで、retina対応かどうかを調べて、retinaならフレームバッファオブジェクトに描画して、コピー。
そうでないなら、フレームバッファに描画してコピーとすると、上手く行きました。


これらは、毎フレームコピーする場合には生じない問題かも知れません。
時々コピーする際に、機種毎で描画結果が異なる時には、この対応が必要かも知れませんね。


とは言うものの、3G対応はしないよ、というコトも多そうですから、フレームバッファオブジェクトからのコピーに統一でも良いかも知れませんね。