Java LWJGL GLTranslation添加到previos Translation

Java LWJGL GLTranslation添加到previos Translation,java,opengl,lwjgl,Java,Opengl,Lwjgl,我在这里编码有问题。 当我渲染2个或更多块时,新块的位置与旧块的位置相加,因此这些块之间的距离不同。我使用了FPCameraController,因此无法添加GL11.glloadIdentify(),因为我的块消失了 渲染类: 而(!Display.isCloseRequested){ GL11.glClear(GL11.GL颜色缓冲位| GL11.GL深度缓冲位| GL11.GL模具缓冲位|) 使用以下变量呈现类: 纹理纹理; 浮动x,y,z GL11.glTranslatef(x,y,z)

我在这里编码有问题。 当我渲染2个或更多块时,新块的位置与旧块的位置相加,因此这些块之间的距离不同。我使用了FPCameraController,因此无法添加GL11.glloadIdentify(),因为我的块消失了

渲染类:

而(!Display.isCloseRequested){ GL11.glClear(GL11.GL颜色缓冲位| GL11.GL深度缓冲位| GL11.GL模具缓冲位|)

使用以下变量呈现类: 纹理纹理; 浮动x,y,z

GL11.glTranslatef(x,y,z);
GL11.glRotatef(0,0.0f,0.0f,0.0f);
GL11.glColor3f(0.5f,0.5f,1.0f);
tex.bind(); GL11.glPolygonMode(GL11.GL_-FRONT,GL11.GL_-FILL)


使用
GL11.glPushMatrix
保存旧矩阵,使用
GL11.glPopMatrix
还原旧矩阵。在
renderTexturedCube
中(或任意位置):

            GL11.glCullFace(GL11.GL_BACK);
            GL11.glEnable(GL11.GL_CULL_FACE);
            GL11.glEnable(GL11.GL_DEPTH_TEST);
            GL11.glDisable(GL11.GL_BLEND);

            GL11.glPopMatrix(); //From 2D
            GL11.glMatrixMode(GL11.GL_PROJECTION);
            GL11.glLoadIdentity();
            GLU.gluPerspective(45f, (float) Display.getWidth() / Display.getHeight(), 0.1f, 1000);
            GL11.glViewport(0, 0, Display.getWidth(), Display.getHeight());
            GL11.glMatrixMode(GL11.GL_MODELVIEW);



            //distance in mouse movement from the last getDX() call.
            dx = Mouse.getDX();
            //distance in mouse movement from the last getDY() call.
            dy = Mouse.getDY();

            //controll camera yaw from x movement fromt the mouse
            camera.yaw(dx * mouseSensitivity);
            //controll camera pitch from y movement fromt the mouse
            camera.pitch(dy * mouseSensitivity);

            //when passing in the distance to move
            //we times the movementSpeed with dt this is a time scale
            //so if its a slow frame u move more then a fast frame
            //so on a slow computer you move just as fast as on a fast computer
            if (Keyboard.isKeyDown(Keyboard.KEY_W))//move forward
            {
                camera.walkForward(movementSpeed*dt);
            }
            if (Keyboard.isKeyDown(Keyboard.KEY_S))//move backwards
            {
                camera.walkBackwards(movementSpeed*dt);
            }
            if (Keyboard.isKeyDown(Keyboard.KEY_A))//strafe left
            {
                camera.strafeLeft(movementSpeed*dt);
            }
            if (Keyboard.isKeyDown(Keyboard.KEY_D))//strafe right
            {
                camera.strafeRight(movementSpeed*dt);
            }

             CubeRenderer.renderTexturedCube(TextureManager.cube_unknown.getTexture(), 0,0,0);
             CubeRenderer.renderTexturedCube(TextureManager.cube_unknown.getTexture(), 0,1,0);
             CubeRenderer.renderTexturedCube(TextureManager.cube_unknown.getTexture(), 0,2,0);
             CubeRenderer.renderTexturedCube(TextureManager.cube_unknown.getTexture(), 1,2,0);
             CubeRenderer.renderTexturedCube(TextureManager.cube_unknown.getTexture(), -1,2,0);
            GL11.glLoadIdentity();
            camera.lookThrough();




            Display.sync(60);
            Display.update();
    }
    Display.destroy();
     GL11.glBegin(GL11.GL_QUADS);
    GL11.glTexCoord2f(0, 0); GL11.glVertex3f(-1, -1, 1);
    GL11.glTexCoord2f(0, 1); GL11.glVertex3f(1, -1, 1);
    GL11.glTexCoord2f(1, 1); GL11.glVertex3f(1, 1, 1);
    GL11.glTexCoord2f(1, 0); GL11.glVertex3f(-1, 1, 1);
    GL11.glEnd();
    //left
    GL11.glBegin(GL11.GL_QUADS);
    GL11.glTexCoord2f(0, 0); GL11.glVertex3f(-1, -1, -1);
    GL11.glTexCoord2f(0, 1); GL11.glVertex3f(-1, -1, 1);
    GL11.glTexCoord2f(1, 1); GL11.glVertex3f(-1, 1, 1);
    GL11.glTexCoord2f(1, 0); GL11.glVertex3f(-1, 1, -1);
    GL11.glEnd();
    //right
    GL11.glBegin(GL11.GL_QUADS);
    GL11.glTexCoord2f(0, 0); GL11.glVertex3f(1, -1, -1);
    GL11.glTexCoord2f(0, 1); GL11.glVertex3f(1, 1, -1);
    GL11.glTexCoord2f(1, 1); GL11.glVertex3f(1, 1, 1);
    GL11.glTexCoord2f(1, 0); GL11.glVertex3f(1, -1, 1);
    GL11.glEnd();
    //front
    GL11.glBegin(GL11.GL_QUADS);
    GL11.glTexCoord2f(0, 0); GL11.glVertex3f(-1, -1, -1);
    GL11.glTexCoord2f(0, 1); GL11.glVertex3f(1, -1, -1);
    GL11.glTexCoord2f(1, 1); GL11.glVertex3f(1, -1, 1);
    GL11.glTexCoord2f(1, 0); GL11.glVertex3f(-1, -1, 1);
    GL11.glEnd();
    //back
    GL11.glBegin(GL11.GL_QUADS);
    GL11.glTexCoord2f(0, 0); GL11.glVertex3f(1, 1, -1);
    GL11.glTexCoord2f(0, 1); GL11.glVertex3f(-1, 1, -1);
    GL11.glTexCoord2f(1, 1); GL11.glVertex3f(-1, 1, 1);
    GL11.glTexCoord2f(1, 0); GL11.glVertex3f(1, 1, 1);
    GL11.glEnd();
    //bottom
    GL11.glBegin(GL11.GL_QUADS);
    GL11.glTexCoord2f(0, 0); GL11.glVertex3f(1, -1, -1);
    GL11.glTexCoord2f(0, 1); GL11.glVertex3f(-1, -1, -1);
    GL11.glTexCoord2f(1, 1); GL11.glVertex3f(-1, 1, -1);
    GL11.glTexCoord2f(1, 0); GL11.glVertex3f(1, 1, -1);
    GL11.glEnd();
GL11.glPushMatrix(); // saves the current matrix

GL11.glTranslatef(x, y, z);
GL11.glRotatef(0, 0.0f, 0.0f, 0.0f); // not sure why you have this; it does nothing

// rest of cube rendering code goes here

GL11.glPopMatrix(); // restore the matrix that was saved at the start of the method