Изображение QGLWidget исчезает после изменения размера окна

Я работаю над некоторым программным обеспечением для отображения полупрозрачных изображений в ряд.

Он работал нормально, используя функции перенасыщения для изменения размера и т. Д., Но затем я решил перейти на Qt для графического интерфейса.

все функции перенасыщения удалены, и я использую QGLWidget для рендеринга своего OpenGL.

Когда я открываю программу, все работает как хотелось, но как только я изменяю размер главного окна (и, следовательно, изменяется размер QGLWidget), содержимое моего виджета openGL исчезает или кажется загроможденным.

Странно, хотя виджет полностью серый (мой glclearcolor), когда нет загроможденного рендера содержимого моей сцены.

Вот как это должно выглядеть (после запуска программы): http://abload.de/img/okw0qh0.png

Вот как это выглядит после изменения размера главного окна: http://abload.de/img/errort1peu.png(иногда оно просто серое)

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

void prosta3dwidget::resizeGL(int width, int height)
{
if (height == 0) return;                // To prevent divide by 0
    GLfloat aspect = (GLfloat)width / (GLfloat)height; //get aspect ratio

    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity();          
    gluPerspective(45.0f, aspect, 0.5f, 100.0f);

    glViewport(0, 0, width, height);
    update(); //redraw content

glMatrixMode(GL_MODELVIEW);
}

1 ответ

Хорошо, обратите внимание, что это должно быть как-то связано с буфером глубины (руководство gluPerspective отмечает, что на точность буфера глубины влияют значения zNear и zFar: https://www.opengl.org/sdk/docs/man2/xhtml/gluPerspective.xml) я отключил GL_DEPTH_TEST (без комментариев glEnable(GL_DEPTH_TEST)), и все, кажется, работает как нужно. все же я не полностью понимаю почему.

проблема решена, новая тайна достигнута.

Другие вопросы по тегам