在 CCLayer 的子类中,有以下两种方法:
-(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);
}
在上面的代码中,有两个测试代码,都没有显示任何内容。
Xcode 4.3.2 IOS 模拟器 5.1 Box2D 2.1.2
经过一番尝试: _debugDraw->DrawPoint(b2Vec2(0,0), 50.0f, b2Color(255, 0, 0)); // NO DRAW _debugDraw->DrawPoint(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,这里有什么可疑的吗?