Изображение 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);
}

person Tim Neumann    schedule 07.01.2016    source источник
comment
Можете ли вы попробовать вызвать updateGL() вместо update()?   -  person ThorngardSO    schedule 07.01.2016
comment
вызов updateGL() вместо update() дал мне тот же результат. По какой-то причине изменение размера работает с zNear в gluPerspective(), установленным на 3, но затем мои объекты сцены исчезают, когда я их поворачиваю.   -  person Tim Neumann    schedule 07.01.2016


Ответы (1)


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

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

person Tim Neumann    schedule 07.01.2016