Java 垂直调整屏幕大小时,四边形移动
我在屏幕上画了一个四边形,位于屏幕顶部并居中。当我调整屏幕大小使其不那么高时,四边形似乎以与它应该的方向相反的速度移动,即,在我的显示器上,它应该以相同的速度向上移动 在渲染之前,它一直被设置为位于屏幕顶部,并使每个循环居中Java 垂直调整屏幕大小时,四边形移动,java,opengl,lwjgl,Java,Opengl,Lwjgl,我在屏幕上画了一个四边形,位于屏幕顶部并居中。当我调整屏幕大小使其不那么高时,四边形似乎以与它应该的方向相反的速度移动,即,在我的显示器上,它应该以相同的速度向上移动 在渲染之前,它一直被设置为位于屏幕顶部,并使每个循环居中 this.location[0] = (Display.getWidth()/2)-(this.size[0]/2); this.location[1] = 0; 然后渲染四边形并打印出其Y位置。无论我如何调整窗口大小,这都会始终返回0。通过打印鼠标坐标,我可以确认调整大
this.location[0] = (Display.getWidth()/2)-(this.size[0]/2);
this.location[1] = 0;
然后渲染四边形并打印出其Y
位置。无论我如何调整窗口大小,这都会始终返回0
。通过打印鼠标坐标,我可以确认调整大小时屏幕顶部为0
。那么,为什么即使我将四边形设置为0
,然后在之后渲染它,它仍然没有在0
处绘制
是否有一些Opengl或LWJGL的概念我不明白
这是Opengl的设置代码
GL11.glEnable(GL_TEXTURE_2D);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0,Display.getWidth(),Display.getHeight(),0 ,1, -1);
glMatrixMode(GL_MODELVIEW);
既然没有人回答这个问题,而我已经找到了一个解决方案,尽管它可能效率低下,这里有一个答案 我换了线路
glOrtho(0,Display.getWidth(),Display.getHeight(), 0 ,1, -1);
到
这意味着顶部不再是顶部,而是屏幕的底部。然后,我必须在我的box类中创建另一个变量,称为realY
,它是box/quad左角的实际y坐标
然后通过一些简单的数学(this.realY=(Display.getHeight()-this.location[1])-this.size[1];
)我将输入Y转换为自身的倒置版本,因此0成为屏幕的高度,反之亦然
对我来说,这似乎是一个低效的解决方案,更像是一个变通办法。如果有人有更好的答案,请发布。调整窗口大小时,您在做什么?通常,人们根据在“调整大小”方法中检索到的大小设置视口。@JackWhiteIII nothing。我需要移动相机还是什么的?我不知道,我已经很久没有使用OpenGL了。如果窗口已调整大小,请尝试再次调用OpenGL安装代码。@JackWhiteIII不起作用。所以我可以在将来写更好的问题,为什么这个被否决了?没有人能回答这个问题?
glOrtho(0,Display.getWidth(), 0,Display.getHeight(),1, -1);