zoukankan      html  css  js  c++  java
  • Box2D:给你的Qt程序加上物理引擎

    [转自: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就可以了。

  • 相关阅读:
    JVM的学习5_____垃圾回收:分代收集算法
    JVM的学习4____GC的作用和垃圾的标记
    JVM的学习3_____逃逸分析与栈上分配
    JVM的学习2____对象实例的内存分配原理
    JVM的学习1_____内存模型
    SpringMVC的学习____6.JSON 和Ajax
    两种方法关联控制器和DOM
    img的src,a的href使用{{}}设置属性不能生效
    ng之{{value}}顺序
    ng之ng-app指令
  • 原文地址:https://www.cnblogs.com/jz319/p/1707975.html
Copyright © 2011-2022 走看看