我有一个简单的绘图循环,我操纵相机,使用glRotatef和glTranslatef然后我尝试用我自己的矩阵而不是使用gl*命令绘制一个对象
例如
void GLCore::render()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glRotatef(camera.xRot,1.0,0.0,0.0);
glRotatef(camera.yRot,0.0,1.0,0.0);
glTranslatef(-camera.position.X, -camera.position.Y, -camera.position.Z);
glPushMatrix();
drawScene();
glPopMatrix();
camera.updateCamera();
}
void GLCore::drawScene()
{
glEnableClientState(GL_VERTEX_ARRAY);
glPushMatrix();
glLoadMatrixf(mapObject->matrix.getMatrixPointer());
glVertexPointer(....);
glDrawElements(....);
glPopMatrix();
glDisableClientState(GL_VERTEX_ARRAY);
}
Run Code Online (Sandbox Code Playgroud)
Matrix来自mapObject,如下所示:
float m[] = { 1.0f, 0.0f, 0.0f, 0.0f,
0.0f, 1.0f, 0.0f, 0.0f,
0.0f, 0.0f, 1.0f, 0.0f,
0.0f, 0.0f, -10.0f, 1.0f };
Run Code Online (Sandbox Code Playgroud)
这与预期的模型10.0f相去甚远,但是当我使用glLoadMatrix时我放松了对摄像机的控制,视图在初始状态下被修复.当我使用glTranslate移动对象时,这不会发生,一切正常,相机仍会环顾四周.根据我的理解,glLoadMatrix调用应仅应用于堆栈中的顶部矩阵,因此它不应影响相机矩阵.
有任何想法吗?:(
谢谢您的帮助
归档时间: |
|
查看次数: |
5675 次 |
最近记录: |