java - LWJGL-四边形平移然后返回到原来的位置

标签 java opengl lwjgl

目前发生的情况是,每当我按空格键时,它都会平移,然后返回到之前的位置。我该如何做到这一点,以便在翻译后它保留在该位置,然后在您再次单击空格后它再次移动并且不会保留在之前的位置?任何帮助表示赞赏。谢谢。

public void renderchar() {
    glPushMatrix();
    GL11.glLoadIdentity();

    GL11.glEnable(GL11.GL_TEXTURE_2D);
    GL11.glEnable(GL11.GL_NORMALIZE);

    keypress();

    GL11.glBegin(GL11.GL_QUADS);
    {
        GL11.glTexCoord2f(0,0);
        GL11.glVertex2f(100,100);
        GL11.glTexCoord2f(1,0);
        GL11.glVertex2f(100+character.getTextureWidth(),100);
        GL11.glTexCoord2f(1,1);
        GL11.glVertex2f(100+character.getTextureWidth(),100+character.getTextureHeight());
        GL11.glTexCoord2f(0,1);
        GL11.glVertex2f(100,100+character.getTextureHeight());
    }

    GL11.glBindTexture(GL11.GL_TEXTURE_2D, 2);

    while(Keyboard.next()) {
        if (Keyboard.isKeyDown(Keyboard.KEY_SPACE)) {
            System.out.println("SPACE KEY IS DOWN");
            GL11.glTranslatef(1.0f, 1.0f, 1.0f);
        }
    }

    glPopMatrix();

    GL11.glEnd(); 
    if (totalTime > 500) {
    }
}

public void keypress() {
    while(Keyboard.next()) {
        if(Keyboard.getEventKey() == Keyboard.KEY_SPACE) {
            GL11.glTranslatef(100,0,0);
        }
    }
}

最佳答案

发生的情况是,当您按空格键时,它会翻译该对象,并且下次运行时,如果未按下空格键,它将不会进行翻译。如果矩阵被弹出,glTranslatef 不会递增,因此您需要一个外部变量来存储对象翻译的量。

float x = 0.0f;
float y = 0.0f;
float z = 0.0f;
GL11.glTranslatef(x, y, z);
while(Keyboard.next()) {
    if (Keyboard.isKeyDown(Keyboard.KEY_SPACE)) {
        System.out.println("SPACE KEY IS DOWN");
        x += 1.0f;
        y += 1.0f;
        z += 1.0f;
}

关于java - LWJGL-四边形平移然后返回到原来的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25518627/

相关文章:

java - 在java中创建lua接口(interface)

java - 当我移动 Web 服务时,所有硬编码 URI 会发生什么情况?

java - 如何在 Controller 中实现正确的数据绑定(bind)?

c++ - 在 OpenGl 4 中编译着色器是强制性的吗?

java - Spring:使用 Spring Security 为执行器端点配置安全性

c++ - 高度图的正常平均

c++ - SDL 窗口无响应

java - 在 OpenGL 中绘制多个对象

java - 制作合适的 Java 数独生成器的问题

java - VBO 纹理不能正常工作 LWJGL