垂直调整屏幕大小时四边形移动

Quad moves when screen is resized verticly

我在屏幕上绘制了一个四边形,位于屏幕顶部并居中。当我调整屏幕大小使其不那么高时,四边形似乎在与它应该的方向相反的方向上移动,即在我的显示器上以与它应该下降的速度相同的速度向上移动。

在渲染之前,它一直被设置在屏幕顶部并在每个循环中居中。

this.location[0] = (Display.getWidth()/2)-(this.size[0]/2);
this.location[1] = 0;

然后我渲染四边形并打印出它的 Y 位置。这始终如一 returns 0,无论我将 window 调整为什么。通过打印出鼠标坐标,我可以确认屏幕顶部在调整大小时是 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);

glOrtho(0,Display.getWidth(), 0,Display.getHeight(),1, -1);

这意味着顶部现在是屏幕底部,而不是顶部。然后我必须在我的盒子 class 中创建另一个变量,称为 realY 这是 box/quad 左角的实际 y 坐标。

然后用一些简单的数学运算 (this.realY = (Display.getHeight() - this.location[1])-this.size[1];) 我将输入的 Y 转换为它自身的倒置版本,因此 0 成为屏幕的高度,反之亦然

对我来说,这似乎是一个低效的解决方案,更像是一种解决方法。如果谁有更好的答案,请post吧。