当屏幕垂直调整大小时,Quad会移动

时间:2015-06-23 09:27:53

标签: java opengl lwjgl

我在屏幕上绘制了一个四边形,位于屏幕顶部并居中。当我调整屏幕大小以使其不那么高时,四边形看起来与它应该向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);

1 个答案:

答案 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成为屏幕的高度,反之亦然

对我而言,这似乎是一种效率低下的解决方案,而且更像是一种解决方法。如果有人有更好的答案,请发布。