C++ opengl 使视野转头移动(站桩看世界)

程序运行截图如下:

抬头低头上看:

向四周看:

关键是放置摄像机,摄像机相关博文如下:

https://blog.csdn.net/qq78442761/article/details/81176920

为什么要加单位矩阵原因如下:

https://blog.csdn.net/qq78442761/article/details/81411959

重要伪代码如下:

void MyGLWidget::paintGL()
{
    glLoadIdentity();
    gluLookAt(0.0, 0.0, 0.0, m_x, m_y, -1.0f, 0.0f, 1.0f, 0.0f);
    glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
    glClear(GL_COLOR_BUFFER_BIT);
    glEnable(GL_TEXTURE_2D);
    glBindTexture(GL_TEXTURE_2D, m_textures);
    glBegin(GL_QUADS);
    glColor4ub(255, 255, 255, 255);
    glTexCoord2f(0.0f, 0.0f);
    glVertex3f(-0.5f, -0.5f, -0.5f);
    glTexCoord2f(1.0f, 0.0f);
    glVertex3f(0.5f, -0.5f, -0.5f);
    glTexCoord2f(1.0f, 1.0f);
    glVertex3f(0.5f, 0.5f, -0.5f);
    glTexCoord2f(0.0f, 1.0f);
    glVertex3f(-0.5f, 0.5f, -0.5f);
    glEnd();
}
void MyGLWidget::keyPressEvent(QKeyEvent *event)
{
    switch (event->key()) {
    case Qt::Key_Up:
        m_y+=0.01;
        break;
    case Qt::Key_Left:
        m_x-=0.01;
        break;
    case Qt::Key_Right:
        m_x+=0.01;
        break;
    case Qt::Key_Down:
        m_y-=0.01;
        break;
    default:
        break;
    }
    update();
    QOpenGLWidget::keyPressEvent(event);
}

猜你喜欢

转载自blog.csdn.net/qq78442761/article/details/81482650