我試圖在Cad上的Cocos2D應用程序中插入OpenGL ES 3D視圖。我是比較新的這些框架,所以我基本上都添加在我CCLayer這些線路:Cocos2D應用程序中的OpenGL ES 3D視圖的緩衝區問題
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部分的代碼是基於蘋果開發示例代碼:http://developer.apple.com/library/mac/#samplecode/GLEssentials/Introduction/Intro.html 唯一我做的更改是以編程方式創建我的視圖(沒有xib文件,initWithCoder - > initWithFrame ...),並且我還將EAGLView類&文件重命名爲EAGL3DView,以免干擾隨Cocos2D一起提供的EAGLView。
現在到我的問題:當我運行這些,我得到一個「OpenGL錯誤0x0502在 - [EAGLView swapBuffers]」,三維視圖正確顯示,但與完全粉紅色的屏幕,否則。
我走進在cocos2d EAGLView的swapBuffers功能,和原來的代碼是唯一重要的塊是這一個:
if(![context_ presentRenderbuffer:GL_RENDERBUFFER_OES])
CCLOG(@"cocos2d: Failed to swap renderbuffer in %s\n", __FUNCTION__);
其中順便說一句不進入「if」條件(presentRenderbuffer做不返回空值,但是不正確,儘管CHECK_GL_ERROR()事後給出了0x0502錯誤)。
所以我明白,我的3D視圖(因爲Cocos2d也使用OpenGL ES)導致Cocos2D視圖無法正常工作,導致OpenGL ES渲染緩衝區出現某種不正確的重寫。這是我迄今爲止得到的結果,我無法弄清楚爲了解決問題需要做些什麼。所以你怎麼看?
希望這只是一個新手的問題...
Pixelvore
聽起來就像你試圖設置兩個單獨的OpenGL視圖。我不會推薦它,如果它完全可能在iOS上。 – LearnCocos2D 2012-07-05 19:53:47