Cocos2d iphone Box2d调试绘图不';有时不显示,但身体显示正常
在CCLayer的子类中,有以下两种方法:Cocos2d iphone Box2d调试绘图不';有时不显示,但身体显示正常,cocos2d-iphone,box2d,Cocos2d Iphone,Box2d,在CCLayer的子类中,有以下两种方法: -(void)setupDebugDraw { _debugDraw = new GLESDebugDraw(PTM_RATIO * [[CCDirector sharedDirector] contentScaleFactor]); world->SetDebugDraw(_debugDraw); uint32 flags = 0; flags += b2DebugDraw::e_shapeBit;
-(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);
}
在上面的代码中,有两个测试代码,它们都没有显示任何内容
代码4.3.2
IOS模拟器5.1
Box2D 2.1.2
经过一些尝试:
_调试绘图->绘图点(b2Vec2(0,0),50.0f,b2Color(255,0,0));//不抽签
_调试绘图->绘图点(b2Vec2(1,1),50.0f,b2Color(255,0,0));//有抽签
似乎一个或多个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,这里有什么问题吗?调试绘图的zindex为0,所以如果您的精灵有zindex>0,您将看不到调试绘图。我删除了背景精灵,第二个测试代码绘制了一个足够大的区域,因此当zorder也为0时,它应该会显示出来。不一定。首先绘制draw方法中的命令,然后绘制zOrder==0的精灵,然后绘制zOrder>0的精灵。因此,如果您想查看调试绘图信息,请将其绘制在具有高zOrder的单独节点中,或将类的子类的zOrder设置为-1或更低。找到一些线索,进行了相关编辑,似乎是绘图点问题。顺便说一句,如果您使用的是CoCoS2D2.0,此代码将无法工作,因为绘图代码使用的是OpenGL ES 1.1。替换cocos2d 2.0 Box2D template.Thx中的Box2D调试绘图类/代码,但我使用cocos2d 1.0.1。