オリエンテーションを変更した後、glClear(GL_COLOR_BUFFER_BIT)
を呼び出すだけではGL表示をクリアできません(図面はどこかにキャッシュされますか?)このキャッシュをクリアするにはどうすればよいですか?
オフスクリーンの画像があまりにも多く描画されています。この画像は、-presentRenderbuffer
に電話すると、CoreAnimationの合成でのみ使用可能になります。
方向変更後、glReadPixel()
は方向変更の前に描画されたピクセルにアクセスできなくなりました。これはどこに保存されているのですか?
私はあなたがRetainedBacking
オプションを使用していると仮定します。このオプションがなければ、回転の外でも前のフレームの内容を読み取ることはできません。 -presentRenderbuffer
に電話すると、オフスクリーンイメージの内容は合成のためにCAに送られ、新しいイメージが代わりに使用されます。新しいイメージの内容は未定義です。
EAGLViewサンプルコードから派生したものを使用していて、RetainedBacking
を使用していると仮定すると、ローテーションが発生すると、フレームバッファの割り当てが解除され、再割り当てされてサイズが変更されます。これが発生すると、既存のコンテンツはすべて失われます。
次のいずれかを実行できます
1)transformプロパティを使用してのUIView(またはCALayerのを)回転させる代わりに、フレームバッファを再割り当てすることはありません)ReadPixels
2を呼び出すことによって、自分自身の移行全体の内容を保存し、。そうすることで、合成中にかなりのパフォーマンスが出る可能性がありますが、フレームバッファのサイズを変更することなく、探している回転を得ることができます。