4

iPad(またはiPhone、iPod Touch)のメイン画面でOpenGL ESを使用してレンダリングしていますが、ユーザーが接続するとすぐにコンテンツが外部画面に「移動」する外部画面でレンダリングしたいと思います。 (外部画面が切断されたときにメイン画面に戻ります)。私はOpenGL呼び出し(少なくともプラットフォームに依存しない、つまりEAGLやCAEAGLのような統合ではないもの)を作成するライブラリを使用していますが、状態はほとんどありません。それを実行するための最良の方法(パフォーマンス、次にメンテナンスの観点から)は何でしょうか?

  • サポートされているとは思いません。サポートされていたとしても、CAEAGLLayerに裏打ちされたビューを新しいウィンドウに移動することはお勧めできません。
  • それ以外の場合は、2つのドローアブルがあります。1つのEAGLContextを保持し、それをメイン画面のCAEAGLLayerから切り離して、外部ディスプレイのCAEAGLLayerに接続する必要がありますか(ユーザーが外部ディスプレイを切断した場合はその逆)?
  • 2つのコンテキストがあり、同じラッパーライブラリインスタンスを使用し続ける必要があります(したがって、画面のアスペクト比、ピクセルが異なるため、1つのコンテキストを保持したとしても、ある程度再構成する必要がありますが、再構成する必要があります)アスペクト比など)
  • 2つのコンテキストがあり、コンテキストごとにラッパーライブラリのインスタンスが1つある必要があります(ライブラリインスタンスをカスタムCAEAGLLayerでサポートされるUIViewのivarにできるという利点があります)。
  • 2つのコンテキストを使用する必要がありますが、一部のリソースを共有できるように共有グループを使用する必要がありますか?

Appleは何を推奨していますか(推奨が1つある場合)?そして、皆さんはどのようにそれを行いましたか(それは珍しい機能だと私に言わないでください!)?

4

2 に答える 2

4

これは、1つのコンテキストと2つのドローアブルで非常にうまく機能します。古いものからデタッチする前にrenderbufferを破棄しCAEAGLLayer、新しいものを新しいものに再割り当てするように注意する必要がありCAEAGLLayerます。これを行うためのほとんどのコードはEAGLView、XcodeのOpenGLESアプリテンプレートのクラスで提供されます。そしてもちろん、OpenGLを描画しているオブジェクトを新しいレイヤーのサイズで再構成する必要があります。

于 2011-05-31T15:19:57.700 に答える
0

Appleには、提供されているそのシナリオ用のGLAirplayという名前のすばらしいサンプルプロジェクトがあります。

ここで見つけることができます。

于 2015-10-06T08:15:04.453 に答える