在翻译对象的位置和旋转之前,使用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命令之间的命令重置视图参数。