我在平移对象的位置和旋转之前使用 loadIdentity() 渲染模型和纹理。
我试图以不同的方法使用 Translatef 和 Rotatef 来旋转我的简单相机(一个角度,角色总是在中间)并且地板四边形没有移动或旋转。我试图在游戏的无限循环中操纵视图:
while (!Display.isCloseRequested()) {
Display.sync(60);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glTranslatef(test, 0, 0);
drawScene();
processKeyboard();
Display.update();
}
drawScene() {
glLoadIdentity();
glBindTexture(GL_TEXTURE_2D,animationTexture.getTextureID());
GL11.glPushMatrix();
glTranslatef(ax, ay, az);
glRotatef(rotatex, 1, 0, 0);
glRotatef(rotatey, 0, 1, 0);
glRotatef(rotatez, 0, 0, 1);
glScalef(scalex, scaley, scalez);
GL11.glCallList(this.objectlist);
GL11.glPopMatrix();
}
有没有一种方法可以编辑此代码以使我的简单视图编辑工作,或者我必须找到其他方法来设置模型位置?
编辑:问题已结束......我刚刚找到了世界上最简单的解决方案。我只需要从项目中的每个绘图类中删除 glLoadIdentity() 命令,当我仅使用 PushMatrix 时,它只会为 Push 和 Pop Matrix 命令之间的命令重置视图参数。