Я работаю над простым средством просмотра изображений, используя QGLWidget, рисуя два треугольника и затем визуализируя их текстурой.
Программа позволяет пользователям увеличивать изображение с помощью прокрутки вниз/вверх, а затем изменяет коэффициент масштабирования с помощью glScalef.
до сих пор он отлично работает, за исключением того, что я сталкиваюсь с проблемой, при которой сокращается мой взгляд.
здесь мой код
void GLWidget::paintGL()
{
// scrollOffset has the coordinates of horizontal and vertical scrollbars
glViewport(0 - scrollOffset.x(), 0 + scrollOffset.y(), this->width(), this->height());
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0, this->width(), this->height(), 0); // flip the y axis
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
// zooming, error happens when the factor is above 3.0
glScalef(zoomFactor, zoomFactor, zoomFactor);
glEnable(GL_NORMALIZE);
glClear(GL_COLOR_BUFFER_BIT);
// Draw something...
}
И скриншот, ошибка обычно возникает, когда масштабный коэффициент довольно большой (выше 3.0/4.0)
Если это не требуется, не масштабируйте ось Z.
Изменить:
glScalef(zoomFactor, zoomFactor, zoomFactor);
в
glScalef(zoomFactor, zoomFactor, 1.0f);