Visual C++ .NET - Integrar OpenGL con Bullet Physics

   
Vista:

Integrar OpenGL con Bullet Physics

Publicado por Juan microwall79@hotmail.com (3 intervenciones) el 03/11/2013 22:04:39
Estoy intentando que el ejemplo de Hello World de Bullet Physics sea grafico por medio de OpenGL.
El Hola Mundo lo que hace es dejar caer una esfera hasta que colisiona con un plano, pero a la hora de capturar ese dato de la altura no puedo debido a que hace todo el calculo en el main del programa, y para hacerlo con openGL lo necesito afuera, ¿Alguno sabe como puedo hacer que la esfera se visualice por medio de OpenGL en el ejemplo de Bullet Physics?

#include <iostream>

#include <btBulletDynamicsCommon.h>

int main (void)
{

btBroadphaseInterface* broadphase = new btDbvtBroadphase();

btDefaultCollisionConfiguration* collisionConfiguration = new btDefaultCollisionConfiguration();
btCollisionDispatcher* dispatcher = new btCollisionDispatcher(collisionConfiguration);

btSequentialImpulseConstraintSolver* solver = new btSequentialImpulseConstraintSolver;

btDiscreteDynamicsWorld* dynamicsWorld = new btDiscreteDynamicsWorld(dispatcher,broadphase,solver,collisionConfiguration);

dynamicsWorld->setGravity(btVector3(0,-10,0));


btCollisionShape* groundShape = new btStaticPlaneShape(btVector3(0,1,0),1);

btCollisionShape* fallShape = new btSphereShape(1);


btDefaultMotionState* groundMotionState = new btDefaultMotionState(btTransform(btQuaternion(0,0,0,1),btVector3(0,-1,0)));
btRigidBody::btRigidBodyConstructionInfo
groundRigidBodyCI(0,groundMotionState,groundShape,btVector3(0,0,0));
btRigidBody* groundRigidBody = new btRigidBody(groundRigidBodyCI);
dynamicsWorld->addRigidBody(groundRigidBody);


btDefaultMotionState* fallMotionState =
new btDefaultMotionState(btTransform(btQuaternion(0,0,0,1),btVector3(0,50,0)));
btScalar mass = 1;
btVector3 fallInertia(0,0,0);
fallShape->calculateLocalInertia(mass,fallInertia);
btRigidBody::btRigidBodyConstructionInfo fallRigidBodyCI(mass,fallMotionState,fallShape,fallInertia);
btRigidBody* fallRigidBody = new btRigidBody(fallRigidBodyCI);
dynamicsWorld->addRigidBody(fallRigidBody);


for (int i=0 ; i<300 ; i++) {
dynamicsWorld->stepSimulation(1/60.f,10);

btTransform trans;
fallRigidBody->getMotionState()->getWorldTransform(trans);

std::cout << "sphere height: " << trans.getOrigin().getY() << std::endl;
}

dynamicsWorld->removeRigidBody(fallRigidBody);
delete fallRigidBody->getMotionState();
delete fallRigidBody;

dynamicsWorld->removeRigidBody(groundRigidBody);
delete groundRigidBody->getMotionState();
delete groundRigidBody;


delete fallShape;

delete groundShape;


delete dynamicsWorld;
delete solver;
delete collisionConfiguration;
delete dispatcher;
delete broadphase;

return 0;
}

En esta linea:
std::cout << "sphere height: " << trans.getOrigin().getY() << std::endl;

es donde se captura el dato de la altura de la esfera, pero está dentro del main, como hago para asignar ese dato para poder dibujar con OpenGL?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
información
Otras secciones de LWP con contenido de Visual C++ .NET
- Código fuente de Visual C++ .NET
información
Códigos de Visual C++ .NET
- Algoritmo del cronometro en c++
- Calculo de Edad en C++
- Calculo de salario, con funciones en C++