4

Apples EAGLView と Texture2D に少し問題があります。EAGLView のインスタンスを作成してテクスチャを描画すると、うまく機能します。しかし、EAGLView の 2 番目のインスタンスを作成するたびに、新しいビューのテクスチャが描画されません。
OpenGL を初めて使用するので、この動作の原因について完全に手がかりが得られました。誰かが助けたい場合は、動作を再現する小さなプロジェクトを作成しました。プロジェクトはhttp://www.cocoabeans.se/OpenGLESBug.zipにあります。

どうもありがとう、
ティム・アンダーソン

更新
共有グループを使用してみましたが、正しく使用したかどうかはよくわかりません。ただし、動作がわずかに変更されました。最初にインスタンス化されたビューでのみテクスチャを描画する代わりに、最後にインスタンス化されたビューでテクスチャを描画し、他のビューで白い四角形を描画します。それが良いか悪いかはわかりませんが、少なくとも現在、他のビューに何かが現れています。
これは私を夢中にさせており、誰かがこの問題で私を助けてくれたらとても感謝しています. 変更を反映するために、 http://www.cocoabeans.se/OpenGLESBug.zipでプロジェクトを更新しました。

乾杯、
ティム

2 回目の更新
さらにいくつか試してみたところ、この問題は Apple の Texture2D クラスに関連しているように見えますが、何が原因で動作しているのか正確にはわかりません。最善の方法は、独自のテクスチャ クラスを作成することだと思います (これは、OpenGL がテクスチャを処理する方法を理解するのに役立ち、おそらく便利になるでしょう)。

4

1 に答える 1

1

(コードをダウンロードしていません。)

2 つの EAGLView を使用するだけの場合、OpenGL 描画コンテキストは異なります (その基本クラスのコードは、GL コンテキストとレンダリング/フレーム/深度バッファーを作成して所有します)。あるコンテキストでテクスチャを生成/バインドすると、他のコンテキストでは使用できなくなります。共有グループを使用したい場合は、コンテキストを共有できます (詳細については、この質問を参照してください: How to use OpenGL ES on a separate thread on iphone? )。または、両方の場所でテクスチャを定義します (小さい場合)。

于 2010-02-17T01:37:33.063 に答える