1

Kobold2D/cocos2Dを使ってiOS用の2Dゲームを作っています。今、私はいくつかの 3D 建物も試してみることにしました (GTA1/2 は建物以外はすべて 2D だと思います)。

OpenGL の仕組みは知っていますが、これを実装しようとするとあらゆる種類のエラーが発生します。

私の質問は次のとおりです。私が見つけたすべてのチュートリアル/例では、opengl と cocos を混在させるためにいくつかの cocos2d ラッパーを使用しています。

以前にこれを行ったことがある場合 (独自の OpenGL ES 2.0 コードを cocos2d と混合)、正しい方向に向けていただけますか?

4

2 に答える 2

1

cocos2d/Kobold2D v2.x を使用している限り、OpenGL ES 2.0 を使用できます。任意の CCNode クラスの-(void) drawメソッドをオーバーライド/実装して、ハックすることができます。

注意点が 1 つだけあります。OpenGL ES メソッドの代わりに、cocos2d が提供する「ccStuffStuff」メソッド (ccDrawColor など) を使用することをお勧めします。これらのメソッドは、パフォーマンス上の理由と互換性のために舞台裏で一部をラップするためです。例については、既存の cocos2d 描画コードを確認してください。そのような例の 1 つは、cocos2d+Box2D プロジェクトの GLES-Render.cpp、または ccDrawingPrimitives.m ファイルです。

于 2013-05-09T18:53:39.077 に答える
0

以前のビューの上に別の oOenGL ビューを単純に表示できますが、別のエンジン (cocos2d) 内でオブジェクトをレイヤー化する場合は、それ自体が別の OpenGL レイヤーである既存の CCLayer に追加することについて話していることになります。そこで問題が発生します。できることは、効果を得るために 3 つのビューを一緒にサンドイッチすることです。(OpenGL ビューの下に 1 つの CCLayer、その上に 1 つの CCLayer)。次に、2 つのトップ ビューの背景色を透明のままにしておくと、それらがすべて 1 つのビューにあるかのように表示されます。

UIColor *color = [UIColor clearColor];
CGColorRef layerBackgroundColor = [color CGColor];
[subLayer setBackgroundColor:layerBackgroundColor];
于 2013-05-09T18:38:20.217 に答える