iPadのCocos2DアプリにOpenGLES3Dビューを挿入しようとしています。私はこれらのフレームワークに比較的慣れていないので、基本的にCCLayerにこれらの行を追加しました。
CGRect rScreen;
// some code to define the bounds and origin of my frame
EAGL3DView * view3d = [[EAGL3DView alloc] initWithFrame:rScreen] ;
[[[CCDirector sharedDirector] openGLView] addSubview: view3d];
[view3d startAnimation]
私が3Dパーツに使用しているコードは、Apple Developerのサンプルコードに基づいています:http ://developer.apple.com/library/mac/#samplecode/GLEssentials/Introduction/Intro.html 私が行った唯一の変更はプログラムでビューを作成し(xibファイルなし、initWithCoder-> initWithFrame ...)、Cocos2Dに付属するEAGLViewに干渉しないように、EAGLViewクラスとファイルの名前をEAGL3DViewに変更しました。
ここで私の問題に移ります。これらを実行すると、「-[EAGLViewswapBuffers]でOpenGLエラー0x0502」が発生します。3Dビューは正しく表示されますが、それ以外の場合は完全にピンク色の画面になります。
Cocos2d EAGLViewのswapBuffers関数に入ったところ、重要なコードのブロックはこれだけであることがわかりました。
if(![context_ presentRenderbuffer:GL_RENDERBUFFER_OES])
CCLOG(@"cocos2d: Failed to swap renderbuffer in %s\n", __FUNCTION__);
これは「if」条件に入りません(presentRenderbufferはnull値を返しませんが、後でCHECK_GL_ERROR()が0x0502エラーを返すため、正しくありません)。
したがって、3DビューによるOpenGL ESレンダーバッファーのある種の誤ったオーバーライドがあり(Cocos2dもOpenGL ESを使用しているため)、Cocos2Dビューが正しく機能しないことを理解しています。これは私がこれまでに得たものであり、それを修正するために何をする必要があるかを正確に理解することはできません。それで、あなたはどう思いますか?
これが初心者の問題にすぎないことを願っています…</p>
Pixelvore