複数の「フレーム」で構成される OpenGL ES 2.0 アプリケーション (Windows で angleproject を使用して開発) を開発しています。
各フレームは、周囲のフレームに干渉しない独立したアプリケーションです。フレームは、そのフレーム内で実行されるコードによって、OpenGL ES 2.0 を使用して描画されます。
私の最初の試みは、各フレームにフレーム バッファを割り当てることでした。しかし、問題がありました。あるフレームの描画中に OpenGL の内部状態が変更され、次のフレームがすべての既知の OpenGL 状態を包括的にリセットしない場合、副作用が発生する可能性があります。これは、各フレームを分離し、互いに影響を与えないようにするという私の要件を無効にします。
私の次の試みは、フレームごとにコンテキストを使用することでした。フレームごとに独自のコンテキストを作成しました。私は共有リソースを使用しているので、各フレームに eglMakeCurrent を適用し、それぞれを独自のフレーム バッファー/テクスチャにレンダリングしてから、eglMakeCurrent をグローバルに戻し、各テクスチャを最終画面に構成できます。
ただし、これはインスタンスを分離するのに優れた仕事をします.. eglMakeCurrent は非常に遅いです。わずか 4 つでも、画面のレンダリングに 1 秒以上かかることがあります。
どのようなアプローチを取ることができますか? フレームごとに OpenGL の状態を何らかの方法で保存することで、コンテキストの切り替えを高速化するか、コンテキストの切り替えを回避する方法はありますか?