原文链接:
这两天玩 cocos2d-x 和 box2d,发现 cocos2d-x 2.0 版本要使用老方法 debug 渲染会出错,于是找到了新方法来 debug draw:
首先在你的头文件里增加这么一条:
public:
//.....
virtual void draw();
//.....
然后在你的 cpp 里实现它:
void HelloWorld::draw() {
CCLayerColor::draw();
ccGLEnableVertexAttribs( kCCVertexAttribFlag_Position );
kmGLPushMatrix();
glScalef(CC_CONTENT_SCALE_FACTOR(), CC_CONTENT_SCALE_FACTOR(), 1.0f);
world->DrawDebugData();
kmGLPopMatrix();
}
这里注意2个地方,首先第一个是 CCLayerColor::draw();
如果你继承的是 CCLayerColor 就用 CCLayerColor::draw(); 否则使用 CCLayer::draw();
如果在继承了 CCLayerColor 的时候使用了CCLayer::draw();那么你图层颜色会丢失。
其次 IOS 上有个 retina 模式,不开启倒也无所谓但是开启了,那么 debug draw 渲染出来的只有一半尺寸
解决这个问题加一句
glScalef(CC_CONTENT_SCALE_FACTOR(), CC_CONTENT_SCALE_FACTOR(), 1.0f);