glGet返回一个不是最新的值

时间:2016-11-16 10:31:05

标签: c++ opengl matrix

我想创建视图矩阵并将此矩阵输出到cpu。我正在尝试使用下面的代码,但视图矩阵'mViewMatrix'落后于一帧。 我想知道是否可以使用glGetFloatv获取正确的视图矩阵,或者是否有必要在cpu上计算矩阵。

class Camera {
    float mViewMatrix[16];
    Vector3 mPos;
    Vector3 mEuler;

    void updateViewMatrix()
    {
        glMatrixMode(GL_MODELVIEW);
        glLoadIdentity();
        glRotatef(-mEuler.x, 1, 0, 0);
        glRotatef(-mEuler.y, 0, 1, 0);
        glRotatef(-mEuler.z, 0, 0, 1);
        glTranslatef(-mPos.x, -mPos.y, -mPos.z);

        glGetFloatv(GL_MODELVIEW_MATRIX, mViewMatrix);
    }
}

1 个答案:

答案 0 :(得分:0)

使用Push& amp;弹出矩阵调用,glGet将返回矩阵堆栈顶部的值:

glPushMatrix();
glGetFloatv(GL_MODELVIEW_MATRIX, mViewMatrix);
glPopMatrix();