Как исправить срез fustrum при масштабировании с помощью glScalef в QGLWidget

0

Я работаю над простым средством просмотра изображений, используя 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) Изображение 174551

Теги:
opengl
qglwidget

1 ответ

0

Если это не требуется, не масштабируйте ось Z.

Изменить:

glScalef(zoomFactor, zoomFactor, zoomFactor);

в

glScalef(zoomFactor, zoomFactor, 1.0f);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню