1

レイヤーができました。特定の「z」値を持つ子を持っています。例えば

  • Child_1 z==-10.0f (CCスプライト)
  • Child_2 z==-5.0f (私のカスタム ノード)
  • Child_3 z==-1.0f (CCスプライト)

私のカスタム ノード (Child_2) には、シェーダーを介してテクスチャを描画するための「draw」メソッド内で直接 OpenGL が呼び出されます。

私が固執する問題:

このような手順で子を追加すると、すべて問題ありません。

[self addChild:Child_1 z:-10.0f tag:1];
[self addChild:Child_2 z:-5.0f tag:2];
[self addChild:Child_3 z:-1.0f tag:3];

そのような方法でそれらを追加すると:

[self addChild:Child_1 z:-10.0f tag:1];
[self addChild:Child_3 z:-1.0f tag:3];
[self addChild:Child_2 z:-5.0f tag:2];

Child_3 は表示されませんが、表示される必要があります。

適切な描画動作のためにopengl es draw呼び出しを使用する方法は?

PSここにコードがあります

[hm2 use];
glVertexAttribPointer ( 0, 3, GL_FLOAT, GL_FALSE, 0, vVertices2 );
glEnableVertexAttribArray ( 0 );
glDrawArrays ( GL_TRIANGLES, 0, 3 );
4

1 に答える 1

0

LearnCocos2D、ありがとう!私は ccDraw* を発見し、z 値を持つ gl* がないことを発見しました。私の間違いは、z 値で glDrawArrays を使用したことです。なぜ私は?2 つの異なるテクスチャが必要だったため、一方が他方と重なっていますが、どちらも Child_1 の上と Child_3 の後ろにある必要があります。私がglDrawArraysに固執した問題を回避するには、z値を使用しないでください。

その問題を回避し、Child_2 内に異なる深さのテクスチャを作成するには、新しい 2 つのノードを作成し、それらを子として Child_2 に追加することが解決策だと思います。

例えば

@implementation Child_2

...

-(id) init
{
[self addChild:Child_2_1 z:-1.0f tag:0];
[self addChild:Child_2_2 z:-2.0f tag:1];

幸運を!

于 2013-05-14T06:46:25.277 に答える