Qt QPainter в paintEvent удаляет графику, нарисованную с помощью paintGL

У меня есть следующий код

void QMyWidget::paintEvent(QPaintEvent *event)
{

    updateGL(); // This calls for initializeGL and then paintGL and draws a nice openGL 3D scene


    QPainter painter(this); 
    // Draw something with QPainter..
}

проблема в том, что строка QPainter несколько раз вызывает initializeGL и paintGL и в конечном итоге создает пустую/серую область над моей визуализированной сценой OpenGL. текст представляет собой серый прямоугольник, который полностью покрывает мою нарисованную сцену OpenGL.

Что не так с этим?


person Johnny Pauling    schedule 17.07.2012    source источник
comment
И что произойдет, если вы вызовете updateGL(); после художника QPainter(это);?   -  person Goz    schedule 18.07.2012
comment
Мерцание, и я вижу, что моя 3D-сцена визуализируется, затем вся сцена становится белой, и вместо 3D-сцены визуализируется содержимое QPainter.   -  person Johnny Pauling    schedule 18.07.2012
comment
Чтобы предоставить дополнительную информацию: если я использую рисовальщик QPainter; (без выбора устройства) все в порядке. Кажется, что художник QPainter(this); очищает визуализированный фреймбуфер перед работой с ним   -  person Johnny Pauling    schedule 18.07.2012
comment
Я боюсь, что есть некоторые VBO/VAO, которые не отвязывались или отвязывались слишком много раз (и перепутались), может ли кто-нибудь дать мне, как отвязать VBO и VAO?   -  person Johnny Pauling    schedule 18.07.2012


Ответы (1)


Решено: многопроходный рендеринг был деактивирован, поэтому сцена рендерилась несколько раз.

person Johnny Pauling    schedule 19.07.2012