glGet返回一个不是最新的值

glGet retuns a value that is not up to date

本文关键字:最新 一个 返回 glGet      更新时间:2023-10-16

我想创建视图矩阵,并得到这个矩阵的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);
    }
}

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

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