我在屏幕上绘制了一个四边形,位于屏幕顶部并居中。当我调整屏幕大小以使其不那么高时,四边形看起来与它应该向IE方向相反的方向移动,其速度应该与我在显示器上的速度相同。
在渲染之前,它经常被设置在屏幕的顶部并使每个循环居中。
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);
答案 0 :(得分:0)
由于没有人回答这个问题,而且我找到了解决办法,但效率低下,这就是答案。
我改变了行
glOrtho(0,Display.getWidth(),Display.getHeight(), 0 ,1, -1);
到
glOrtho(0,Display.getWidth(), 0,Display.getHeight(),1, -1);
这意味着顶部现在是屏幕的底部,而不是顶部是顶部。然后,我必须在我的box类中创建另一个变量,名为realY
,它是box / quad左下角的实际y坐标。
然后使用一些简单的数学运算(this.realY = (Display.getHeight() - this.location[1])-this.size[1];
)我将输入Y转换为自身的颠倒版本,因此0成为屏幕的高度,反之亦然
对我而言,这似乎是一种效率低下的解决方案,而且更像是一种解决方法。如果有人有更好的答案,请发布。