开启BOX2D引擎的调试绘图功能
2015-04-15 16:42
369 查看
在最新的3.X版本中,引擎整合了物理引擎,提供了更为方便的接口,包括了调试绘图,它是一个世界对象的接口——setDebugDrawMask(int mask),参数一般用DEBUGDRAW_ALL就可以了。那么怎么获得一个世界对象呢?通常使用scene的getPhysicsWorld 接口就可以了。
以下是之前写的在2.x版本下的开启方法,很显然,麻烦得多,感觉可以弃用了。
在做物理游戏的时候,需要用到调试绘图的功能。但我在实际操作中还是遇到了一些麻烦的,在此总结一下,以备后用。
在BOX2D中提供了一个b2Draw类,里面包含了许多绘制方法(好像有很多虚函数接口,需要实现的)。姑且把这个类及其子类的对象看成一个绘制模块,通过让“世界”加载并调用该模块来实现调试绘制功能。
详细的步骤如下:
1.复制GLES-Render.h和GLES-Render.cpp两个文件到Classes目录下
GLESDebugDraw继承自b2Draw类,实现了一部分绘制接口。而GLESDebugDraw类就定义在这两个文件中。不过cocos2d-x引擎没有提供该头文件,因此需要手动复制并引入。可以在cocos2d-x的Box2DTestBed示例项目里面找到这两个文件。
2.创建GLESDebugDraw类对象(绘制模块),并设置其绘制标识(flag),然后将绘制模块加载到“世界”中
PTM_RATIO是一个需要自定义的宏(#define PTM_RATIO 32),代表32像素/米,在BOX2D中使用的距离单位是米,因此需要进行一个像素到米的转换。flags是一个二进制的标识,代表了调试绘制的类型。
3.重写场景类的draw函数,让“世界”绘制调试信息
虽然对这段代码内容不很理解,但这段代码也无需修改,只要知道其功能就可以了。
这里还要注意一个问题,在调试绘图的时候,最好不要加上背景图片,不然很容易干扰到绘制视觉。
以下是之前写的在2.x版本下的开启方法,很显然,麻烦得多,感觉可以弃用了。
在做物理游戏的时候,需要用到调试绘图的功能。但我在实际操作中还是遇到了一些麻烦的,在此总结一下,以备后用。
在BOX2D中提供了一个b2Draw类,里面包含了许多绘制方法(好像有很多虚函数接口,需要实现的)。姑且把这个类及其子类的对象看成一个绘制模块,通过让“世界”加载并调用该模块来实现调试绘制功能。
详细的步骤如下:
1.复制GLES-Render.h和GLES-Render.cpp两个文件到Classes目录下
GLESDebugDraw继承自b2Draw类,实现了一部分绘制接口。而GLESDebugDraw类就定义在这两个文件中。不过cocos2d-x引擎没有提供该头文件,因此需要手动复制并引入。可以在cocos2d-x的Box2DTestBed示例项目里面找到这两个文件。
2.创建GLESDebugDraw类对象(绘制模块),并设置其绘制标识(flag),然后将绘制模块加载到“世界”中
GLESDebugDraw *debugDraw = new GLESDebugDraw(PTM_RATIO); uint32 flags = 0; flags += b2Draw::e_shapeBit; //flags += b2Draw::e_jointBit; //flags += b2Draw::e_aabbBit; //flags += b2Draw::e_pairBit; //flags += b2Draw::e_centerOfMassBit; debugDraw->SetFlags(flags); m_world->SetDebugDraw(debugDraw);
PTM_RATIO是一个需要自定义的宏(#define PTM_RATIO 32),代表32像素/米,在BOX2D中使用的距离单位是米,因此需要进行一个像素到米的转换。flags是一个二进制的标识,代表了调试绘制的类型。
3.重写场景类的draw函数,让“世界”绘制调试信息
void Test::draw() { CCLayer::draw(); ccGLEnableVertexAttribs(kCCVertexAttribFlag_Position); kmGLPushMatrix(); m_world->DrawDebugData(); kmGLPopMatrix(); }
虽然对这段代码内容不很理解,但这段代码也无需修改,只要知道其功能就可以了。
这里还要注意一个问题,在调试绘图的时候,最好不要加上背景图片,不然很容易干扰到绘制视觉。
相关文章推荐
- 开启SE16N调试功能,用户表内容的删除与更新
- 为glassfish/OpenPortal Portlet Container 2.0开启调试功能
- BOX2D 第十二章 调试绘图
- Tomcat开启远程调试功能
- 【discuz x3】如何开启discuz x3的debug调试功能
- Zend Studio 开启 PHP 5.2.x 环境的远程调试功能[ZendDebugger]
- TSF ( 改善Color Shading的问题 )功能的调试和开启
- Zend Studio 开启 PHP 5.2.x 环境的远程调试功能[ZendDebugger]
- 魅族flyme6-USB调试功能开启
- 关于在Box2dTest中开启调试打印
- Android Wi-Fi 开启SSR调试功能(基于QCOM平台)
- 开启thinkphp的调试功能
- 【DirectX 12】在Win10 10074上开启DirectX 12的调试功能
- 开启flume的远程调试功能
- 如何开启远程调试功能
- 在ZendStudio中开启PHP 5.2.x 环境的远程调试功能
- 开启safari调试功能
- Box2d学习笔记一:在cocos2d-x中启动调试绘图
- tomcat开启远程调试功能
- Xampp + Zend Studio 开启Xdebug调试功能