2013-11-14 1 views
1

Я немного путался с пулей, и теперь я хочу отлаживать отладки. У меня есть мир 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; } 

}; 

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

Где инициализировать Бритиш мир, я установить тип отладки рисовать, как это:

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(); 

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

+0

Я знаю, что это старое сообщение, но оно появилось на вершине, когда я искал. Вы случайно реализовали какие-либо из этих методов в своем классе GLDebugDrawer? – Jamie

ответ

1

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

+1

эй. Спасибо за ответ. посмотрел на эту статью и последовал за ней, но я до сих пор ничего не получаю. Если я делаю 'bt_dynamicsWorld-> setDebugDrawer (& debugDraw);' я получаю это: 'не может преобразовать аргумент 1 из 'GLDebugDrawer **' в 'btIDebugDraw *' '. – b0Gd4N

 Смежные вопросы

  • Нет связанных вопросов^_^