Hello World in ODE

来源:互联网 发布:电脑硬件升级建议软件 编辑:程序博客网 时间:2024/03/28 22:23

ode用的是BSD license, 很亲善, 并且库本身质量还不错, 可以作为正经的用途.

并且API是c风格的,可以很轻松的用于其他语言.

作为熟悉引擎, 先写个最简单的小球下落作为HelloWorld.

结果就像这样:

Mac-mini:ode $ ./a.out0010100001000010009.9755100001000010009.9265100001000010009.853100001000010009.755100001000010009.6325100001000010009.4855100001000010009.314100001000010009.118100001000010008.8975100001000010008.6525100001000010008.383100001000010008.089100001000010007.7705100001000010

虽然ode本身带了一个非常简单的图像引擎,不过我不打算用,

毕竟描画还是自己折腾openGL比较灵活高效,更何况已经写了objloader,至于要读模型文件,旋转平移就行了.


下面是源代码, 不知道为什么, 语法高亮失效了, 难道是我设置的问题?

Mac-mini:ode$ cat basic.dimport std.stdio, ode;static dWorldID world;dBodyID ball;const dReal radius = .2;const dReal mass = 1.;static void simLoop(){dReal* pos;dReal* r;pos = dBodyGetPosition(ball);r = dBodyGetRotation(ball);writeln(*pos,"\t",*(pos+1),"\t",*(pos+2));foreach(i;0..3*4) write(*(r+i),((i+1)%4==0)?"\n":"\t");writeln();dWorldStep(world, 0.05);}void main(){dInitODE();world = dWorldCreate();dWorldSetGravity(world, 0, 0, -9.8);ball = dBodyCreate(world);dMass m1;dMassSetZero(&m1);dMassSetSphereTotal(&m1, mass, radius);dBodySetMass(ball, &m1);dBodySetPosition(ball, 0,0,10);foreach(i;1..40) simLoop();dWorldDestroy(world);dCloseODE();}


连接的时候注意用g++才行,因为库用到了c++.其他的都交给pkg-config吧

原创粉丝点击