[转自:http://www.javaeye.com/articles/2461]

 

看CuteQt博客的,估计大部分人也在看Qt Labs的博客,我也订阅了Qt Labs的博客,不过大部分时间都是过个标题,没有细看。今天有时间再去扫一遍就帖子,发现有个好东西Qt+Box2D被我错过了。

Box2D是一个开源物理引擎,它提供了碰撞,摩擦,加速度(含重力加速度)等物理特效。如果你对物理引擎还没什么概念的话,试玩一下下面这个游戏或者15个最佳Flash物理游戏,你就会明白了。

Box2D做为一个物理引擎,它本身并不提供可见的图形界面,但是提供了计算在物理世界中刚体(不会变形的物体)运动(旋转/移动)轨迹数据的能力。所以任何一个带图形界面的程序开发框架都可以使用Box2D提供的数据,将物理特效以直观的方式展现出来。目前javascript/flash/java/Python等都提供了对Box2D的支持。当然Qt也能将Box2D加入进来和Graphics View框架结合,而且因为都是C++代码,这种集成显得非常方便。下面是我在Linux上的一个测试过程.

1. 编译Box2D

step1. 项目地址在http://code.google.com/p/box2d,代码下载请点击Box2D_v2.0.1.zip
step2. 解压进入/Box2D_v2.0.1/Box2D目录执行make命令
step2a. 上面的命令会报错/Box2D_v2,提示GL/freeglut.h找不到,在对应的Makefile中修改CFLAGS或者CXXFLAGS加入”-I/home/zhu/Box2D_v2.0.1/Box2D/Contrib/freeglut”参数
step2b. 另外一个错误就是提示找不到 memcp之类的函数,只要在Source/Common/b2Settings.h文件中加入”#include <cstring>” 就可以了。<br> step2c. 编译成功后在Examples下有个演示程序,可以打开瞅瞅.地址是Examples/TestBed/Gen/float/testbed或者Examples/TestBed/Gen/fixed/testbed,分别为浮点和定点。<br><img title="Box2D Demo" src="http://docs.google.com/File?id=dhhvrcmh_212gz357gdb_b" alt="" width="528" height="462"></cstring>

step3. Box2D的手册,请参考http://www.box2d.org/manual.html

2.在Qt程序中使用Box2D

关键是将Box2D的头文件和库文件路径分别设置到INCLUDEPATH和LIBPATH里,代码细节介绍请看原博客Qt+Box2D,代码下载在qgv-box2dtar.gz。修改.pro,然后执行qmake和make就可以了。

posted on 2010-04-09 09:23  М80メ  阅读(1066)  评论(0编辑  收藏  举报