我有以下代码:
void setupCamera() {
// Clear the screen buffer
glClear(GL_COLOR_BUFFER_BIT);
// reset the projection matrix //
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
// and set the perspective with the current field of view,
// and the current height and width
gluPerspective(fov, ratio, objDepth - objRadius * 2,
objDepth + objRadius * 2);
glViewport(0, 0, WINDOW_SIZE, WINDOW_SIZE);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
if(first){
glMultMatrixf(rotMatrix);
}
first = true;
//translate everything to be in objDepth//
glTranslatef(initX * 0.01, initY * 0.01, (-1) * objDepth);
glRotatef(200 * angle, rotationVector[0], rotationVector[1],
rotationVector[2]);
glutWireTeapot(1.5);
glGetFloatv (GL_MODELVIEW_MATRIX, rotMatrix);
}
旋转向量保持旋转轴,
translate 用于将所有内容移动到正确的位置。
问题是,我正在使用glMultMatrixf
以使用保存的最后一个矩阵,
旋转然后平移,然后用 . 再次保存矩阵glGetFloatv
。
这个函数经常用定时器调用,但出于某种原因
我想不通,矩阵不会保存任何东西并且总是一遍又一遍地初始化,
意味着旋转总是以小角度使用(因为不保存矩阵)。
保存的矩阵未在代码中的其他任何地方使用。
有任何想法吗?