2

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

4

0 回答 0