Ящик для отладки пуль с OpenGL

Я немного возился с пулей, и теперь я хочу сделать отладку.
У меня есть мир opengl с работающей физикой пули и всем остальным.

То, что я пробовал, это:
Я создал класс GLDebugDrawer, как это:

#include "LinearMath/btIDebugDraw.h"
class GLDebugDrawer : public btIDebugDraw
{
int m_debugMode;

public:

GLDebugDrawer();
virtual ~GLDebugDrawer();

virtual void   drawLine(const btVector3& from, const btVector3& to, const btVector3& fromColor, const btVector3& toColor);

virtual void   drawLine(const btVector3& from, const btVector3& to, const btVector3& color);

virtual void   drawSphere(const btVector3& p, btScalar radius, const btVector3& color);

virtual void   drawTriangle(const btVector3& a, const btVector3& b, const btVector3& c, const btVector3& color, btScalar alpha);

virtual void   drawContactPoint(const btVector3& PointOnB, const btVector3& normalOnB, btScalar distance, int lifeTime, const btVector3& color);

virtual void   reportErrorWarning(const char* warningString);

virtual void   draw3dText(const btVector3& location, const char* textString);

virtual void   setDebugMode(int debugMode);

virtual int      getDebugMode() const { return m_debugMode; }

};

Затем в игру я включаю этот заголовок и создаю его экземпляр.

Там, где я инициализирую мир bt, я устанавливаю тип отладочной отрисовки так:

debugDraw->DBG_DrawWireframe; // this breaks when I run the app
debugDraw->setDebugMode(btIDebugDraw::DBG_DrawWireframe); // so does this
debugDraw->setDebugMode(1); // this doesn't

Затем я устанавливаю отладку в мир маркеров следующим образом:

bt_dynamicsWorld->setDebugDrawer(debugDraw);

И, наконец, я отрисовываю отладочную отрисовку после рендеринга тел маркеров следующим образом:

bt_dynamicsWorld->debugDrawWorld();

Должно быть что-то, чего мне не хватает, так как я не получаю никаких каркасов или чего-то еще во время работы.

1

Решение

На сайте доступен простой набор кода http://sio2interactive.forumotion.net/t599-enabling-bullet-debug-draw-code-included который должен быть относительно простым в использовании для изменения вашего кода, похоже, вам может потребоваться изменить bt_dynamicsWorld->setDebugDrawer(debugDraw); в bt_dynamicsWorld->setDebugDrawer(&debugDraw); (не уверен, хотя, как не знаю, как у вас есть настройки фреймворка.

1

Другие решения

Других решений пока нет …