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