0

CCLayerのサブクラス内には、以下の2つのメソッドがあります。

-(void)setupDebugDraw 
{
    _debugDraw = new GLESDebugDraw(PTM_RATIO * [[CCDirector sharedDirector] contentScaleFactor]);
    world->SetDebugDraw(_debugDraw);

    uint32 flags = 0;
    flags += b2DebugDraw::e_shapeBit;
    flags += b2DebugDraw::e_jointBit;
    flags += b2DebugDraw::e_aabbBit;
    flags += b2DebugDraw::e_pairBit;
    flags += b2DebugDraw::e_centerOfMassBit;
    _debugDraw->SetFlags(flags);

    // (TEST CODE) BELOW DOESN'T SHOW!
    _debugDraw->DrawPoint(b2Vec2(0,0), 500.0f, b2Color(255, 255, 255));
}

-(void) draw {
    glDisable(GL_TEXTURE_2D);
    glDisableClientState(GL_COLOR_ARRAY);
    glDisableClientState(GL_TEXTURE_COORD_ARRAY);

    if (world) {
        // BODIES SHOW OK
        world->DrawDebugData();

        // (TEST CODE) BELOW DOESN'T SHOW EITHER!
        _debugDraw->DrawPoint(b2Vec2(0,0), 500.0f, b2Color(255, 255, 255));
    }

    glEnable(GL_TEXTURE_2D);
    glEnableClientState(GL_COLOR_ARRAY);
    glEnableClientState(GL_TEXTURE_COORD_ARRAY);    
}

上記のコードには2つのテストコードがあり、どちらも何も表示されません。

Xcode 4.3.2 IOS Simulator 5.1 Box2D 2.1.2

試してみた後:_debugDraw-> DrawPoint(b2Vec2(0,0)、50.0f、b2Color(255、0、0)); //描画なし_debugDraw->DrawPoint(b2Vec2(1,1)、50.0f、b2Color(255、0、0)); //ドローします!!

1つ以上の0のドローポイントはまったく描画されないようです!サイズが十分大きくても!

void GLESDebugDraw::DrawPoint(const b2Vec2& p, float32 size, const b2Color& color)
{
    glColor4f(color.r, color.g, color.b,1);
    glPointSize(size);
    GLfloat             glVertices[] = {
        p.x * mRatio, p.y * mRatio
    };
    glVertexPointer(2, GL_FLOAT, 0, glVertices);
    glDrawArrays(GL_POINTS, 0, 1);
    glPointSize(1.0f);
}

openGL apiがわからないので、ここで疑わしい点はありますか?

4

1 に答える 1

0

デバッグ ドローの zindex は 0 であるため、スプライトの zindex > 0 の場合、デバッグ ドローは表示されません。

于 2012-08-06T09:54:57.437 に答える