Иногда PaintGL в Qt не рисует границу OpenGL коллайдеров Bullet Physics.C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Гость
 Иногда PaintGL в Qt не рисует границу OpenGL коллайдеров Bullet Physics.

Сообщение Гость »


Это работает 50 на 50 %:


Изображение

[img]https:/ /i.stack.imgur.com/Ya2TM.gif[/img]


Для перерисовки я использую таймер:

void Widget::animationLoop() { m_deltaTime = m_elapsedTimer.elapsed() / 1000.f; m_elapsedTimer.restart(); m_pWorld->stepSimulation(m_deltaTime, 8); обновлять(); } Я вызываю отрисовку коллайдера (m_pWorld->debugDrawWorld();) следующим образом:

void Widget::paintGL() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); m_pWorld->debugDrawWorld(); m_projViewMatrix = m_projMatrix * m_viewMatrix; m_pPlayer->position = m_pPlayerCollider->getPosition(); m_pPlayer->rotation = m_pPlayerCollider->getRotation(); m_pPlayer->draw(m_projViewMatrix); m_pGround->draw(m_projViewMatrix); m_pPlatforms->draw(m_projViewMatrix); } У меня есть класс DebugDrawer, который я унаследовал от btIDebugDraw. Я переопределяю метод drawLine, чтобы преобразовать куб 1x1x1 в сегмент для рисования. Я рисую сегмент, вызывая m_pColliderEdge->draw(m_projViewMatrix); в методе drawLine.

Я пытался отправить указатель на объект QOpenGLWidget конструктору DebugDrawer:

DebugDrawer(QOpenGLWidget *widget, btDynamicsWorld *pWorld, ColliderEdge *pColliderEdge); чтобы сохранить его для makeCurrent, но это не помогло:
void DebugDrawer::drawLine(const btVector3 &from, const btVector3 &to, const btVector3 &color) { /* ... */ m_pWidget->makeCurrent(); m_projViewMatrix = projMatrix * viewMatrix; m_pColliderEdge->draw(m_projViewMatrix); }
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Qt и OpenGL: невозможно инициализировать VBO или VAO openGL после первого вызова PaintGL?
    Anonymous » » в форуме C++
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Qt и OpenGL: невозможно инициализировать OpenGL VBO или VAO после первого вызова PaintGL?
    Anonymous » » в форуме C++
    0 Ответы
    35 Просмотры
    Последнее сообщение Anonymous
  • Почему мой Raycast не обнаруживает сетчатых коллайдеров в Unity?
    Гость » » в форуме C#
    0 Ответы
    29 Просмотры
    Последнее сообщение Гость
  • Как показать разные мощные подсказки для Target и Bar на графике Bullet HighCharts?
    Anonymous » » в форуме Javascript
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Наменькая строка для Word Docx Bullet Format [Duplicate]
    Anonymous » » в форуме Python
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»