1.将cocos2d-x-3.10\tests\cpp-tests\Classes\Box2DTestBed目录下的GLES-Render.h和GLES-Render.cpp拷贝到当前项目的Classes目录下。

2.在visual studio2013打开当前项目解决方案,在解决方案资源管理器的src下右键->添加->现有项,选择刚才拷贝到Classes目录下GLES-Render.h和GLES-Render.cpp。

Box2dTest.h

 #ifndef _BOX2D_TEST_H_
#define _BOX2D_TEST_H_
#include "cocos2d.h"
#include "Box2D\Box2D.h"
USING_NS_CC;
class Box2dTest:public Node{
public:
Box2dTest();
~Box2dTest();
virtual bool init();
void update(float) override;
virtual void draw(Renderer *renderer, const Mat4& transform, uint32_t flags) override;
CREATE_FUNC(Box2dTest);
private:
b2World* _world;
};
#endif

Box2dTest.cpp

 #include "Box2dTest.h"
#include "GLES-Render.h" #define PTM_RATIO 32 Box2dTest::Box2dTest(){ } Box2dTest::~Box2dTest(){
CC_SAFE_DELETE(_world);
} bool Box2dTest::init(){
if (!Node::init())return false;
_world = new b2World(b2Vec2(0.0f, 0.0f)); //创建一个矩形刚体
b2BodyDef boxDef;
boxDef.position.Set(/PTM_RATIO,/PTM_RATIO);
b2Body* box = _world->CreateBody(&boxDef);
b2PolygonShape boxShape;
boxShape.SetAsBox(/PTM_RATIO, /PTM_RATIO);
box->CreateFixture(&boxShape,); //调试视图
GLESDebugDraw* debugDraw = new GLESDebugDraw(PTM_RATIO);
_world->SetDebugDraw(debugDraw);
uint32 flags = ;
flags += b2Draw::e_shapeBit;
flags += b2Draw::e_pairBit;
flags += b2Draw::e_centerOfMassBit;
debugDraw->SetFlags(flags); scheduleUpdate();
return true;
} void Box2dTest::update(float delta){
_world->Step(30.0f, , );
} void Box2dTest::draw(Renderer *renderer, const Mat4& transform, uint32_t flags){
Node::draw(renderer, transform, flags); ccGLEnableVertexAttribs(kCCVertexAttribFlag_Position);
kmGLPushMatrix();
_world->DrawDebugData();
kmGLPopMatrix();
CHECK_GL_ERROR_DEBUG();
}

HelloWorld.cpp下的init()函数下添加:

 Box2dTest* box2dTest=Box2dTest::create();
addChild(box2dTest);

cocos2d-x 3.10 显示Box2d 调试视图的更多相关文章

  1. [Xcode 实际操作]九、实用进阶-(21)使用“调试视图”查看各界面元素的层次顺序

    目录:[Swift]Xcode实际操作 本文将演示如何在程序运行期间,查看模拟器各界面元素的层次顺序. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import ...

  2. 【XAF问题】层层分级,如何让按钮显示指定的视图

    一.问题 1. 层层分级,如何让按钮显示指定的视图 二.解决方法 解决方法:因为它是层层级别的,不能显示出来指定的视图,需要添加ActionContainer,才可以显示出来

  3. [翻译] SFRoundProgressCounterView 带有进度显示的倒计时视图

    SFRoundProgressCounterView 带有进度显示的倒计时视图 https://github.com/simpliflow/SFRoundProgressCounterView A c ...

  4. (转)程序员应该知道的10个eclipse调试技巧

    调试不仅可以查找到应用程序缺陷所在,还可以解决缺陷.对于Java程序员来说,他们不仅要学会如何在Eclipse里面开发像样的程序,更需要学会如何调试程序.本文介绍了Java程序员必知的10个调试技巧, ...

  5. VisualGDB系列10:快速调试Linux应用程序

    根据VisualGDB官网(https://visualgdb.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指正. 本文介绍如何快速调试GCC构建的Linu ...

  6. 最全Pycharm教程(10)——Pycharm调试器总篇

    最全Pycharm教程(1)--定制外观 最全Pycharm教程(2)--代码风格 最全Pycharm教程(3)--代码的调试.执行 最全Pycharm教程(4)--有关Python解释器的相关配置 ...

  7. SELECT CAST(GETDATE() AS VARCHAR(10)) 显示不同格式的原因

    开发人员测试时,发现生产服务器与测试服务器执行SELECT CAST(GETDATE() AS VARCHAR(10))语句显示的格式不一样.如下所示 Server A Server B 其实出现这个 ...

  8. Java程序员应该知道的10个Eclipse调试技巧

    Eclipse是众多Java程序员实用的开发工具,其中开发技巧也是繁多,但作为优秀的Java程序员,需要掌握最起码的调试技巧. 1 条件断点 2 异常断点 3 监视点 4 评估/检查 5 修改变量值 ...

  9. Xcode在playground的quick look框中显示对象自定义视图

    对于一般对象,playground中默认的quick look显示已经够用,比如简单的字符串,Int,或简单的自定义Class等等. 不过对于有些情况,我们需要自定义对象在playground中的显示 ...

随机推荐

  1. document.onreadystatechange()来判断页面加载完

    document.onreadystatechange = subSomething;//当页面加载状态改变的时候执行这个方法. function subSomething() {  if(docum ...

  2. windows cmd启动heritrix

    首先下载heritrix-1.14.4.zip文件,可以在http://sourceforge.net/projects/archive-crawler/files/heritrix3/下载.下载后解 ...

  3. 从Map、JSONObject取不存在键值对时的异常情况

    1.在Map中取不存在的键值对时不会报异常,只会返回null. @Test public void testMap() { Map<String, Object> map = new Ha ...

  4. A. Launch of Collider Codeforces Round #363 (Div2)

    A. Launch of Collider time limit per test 2 seconds memory limit per test 256 megabytes input standa ...

  5. 移动UI

    UI设计需要关注:色彩,信息布局,交互流程,用户体验,尺寸等

  6. PHP signal 信号

    最早写php时,发现在终端执行一个php文件,会一直等待程序执行完成以后,终端才能继续下面的操作,若不小心按了下Ctrl+C会导致php程序退出,闭避免这种情况发生,将会使用php的系统编程,即sig ...

  7. 菜鸟认识揭开DLL木马

    相信经常玩木马的朋友们都会知道一些木马的特性,也会有自己最喜爱的木马,不过,很多朋友依然不知道近年兴起的“DLL木马”为何物.什么是“DLL木马”呢?它与一般的木马有什么不同? 一.从DLL技术说起 ...

  8. linux设置时间服务器

    对多个linux服务器,时间保持一致是很必要的.根据精确度要求,应该有相应的时间间隔进行时间同步.如果不进行时间同步,时间久了就会差别很大,遇到问题时定位就很困难.因为多台设备的配合,log之间可能有 ...

  9. redis运维的一些知识点

    恰好看到一些redis需要主要的东西 记下 供参考 原文地址 http://hi.baidu.com/ywdblog/item/1a8c6ed42edf01866dce3fe3 最近在线上实际使用了一 ...

  10. JedisConnectionException: Unexpected end of stream.

    在实际项目中遇到redis读取时报错. 报错是 [ERROR]  redis.clients.jedis.exceptions.JedisConnectionException: Unexpected ...