2013-05-09 76 views
1

我正在使用Kobold2D/cocos2D爲iOS製作2D遊戲。現在我決定嘗試添加一些3d建築物(認爲GTA1/2的一切都是2D,除了建築物)。我可以在iOS上將正常的OpenGL ES 2.0與Kobol2D/cocos2d混合嗎?

我知道OpenGL是如何工作的,但是當嘗試實現這個時,我得到各種各樣的錯誤。

我的問題是: cocos2d是否阻止我使用正常的OpenGL調用?或者如果它正確地完成,它應該工作正常嗎?我找到的每個教程/例子都使用了一些cocos2d包裝來混合opengl和cocos。

如果你之前做過這些(將自己的OpenGL ES 2.0代碼與cocos2d混合在一起),你能指出我的方向嗎?

回答

1

只要您使用的是cocos2d/Kobold2D v2.x,您就可以使用OpenGL ES 2.0。你可以覆蓋/實現任何CCNode類的方法並破解掉。

只有一個警告:您應該更喜歡使用cocos2d提供的「ccStuffStuff」方法(例如ccDrawColor)而不是OpenGL ES方法,因爲它們出於性能原因和兼容性而將其包含在幕後。查看任何現有的cocos2d繪圖代碼。其中一個例子是來自cocos2d + Box2D項目的GLES-Render.cpp或ccDrawingPrimitives.m文件。

+0

Bah,這個傢伙對Cocos2D有什麼瞭解...完全可笑,哈哈。看看他的書,它有關於這個主題和他之間的一些很好的信息,Riq和Ray他們是要求或參考的人。 ;-) – 2013-05-09 19:08:33

+0

完美,非常感謝!可愛的書btw;) – user1033619 2013-05-09 19:18:11

0

您可以簡單地在前一個頂部顯示另一個oOenGL視圖,但是如果您想要在另一個引擎(cocos2d)中分層對象,那麼您正在討論將其添加到現有的CCLayer中,該CCLayer本身就是另一個OpenGL層。這就是你會遇到問題的地方。你可以做的是將3個視圖夾在一起以獲得效果。 (1 CCLayer低於你的OpenGL視圖和一個CCLayer以上)。然後,您可以將背景顏色保留在您的2個頂部視圖中,並且它將顯示爲全部都在一個視圖中。

UIColor *color = [UIColor clearColor]; 
CGColorRef layerBackgroundColor = [color CGColor]; 
[subLayer setBackgroundColor:layerBackgroundColor];