我可能有一个简单的数学问题,我很难弄清楚。我有一个可调整大小的 LWJGL (OpenGL) 窗口。我正在制作的游戏是 2D 的,但我使用 glFrustum() 来获取我的精灵的深度。这是我的投影代码中的一个(稍微简化的)片段:
double divider = 64.0;
double left = -vw / divider;
double right = vw / divider;
double bottom = vh / divider;
double top = -vh / divider;
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glFrustum(left * aspect, right * aspect, bottom, top, 8, 65536);
float zModifier = -256;
float vRatio = Game.HEIGHT / Display.getHeight();
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(-vw / 2.0f, -vh / 2.0f, zModifier * vRatio);
(我必须承认我不太了解截锥体,我在互联网的某个地方找到了这段代码,它对我很有帮助......)
但是,我正在用精灵渲染我自己的光标,并在光标与窗口边框接触时切换到本机光标。在我调整窗口大小之前,这一切都很好。
现在我的问题是,当我调整窗口大小时,本机光标与相对于vRatio
. 根据调整后的窗口大小,它会“跳跃”一点或更多。
当精灵光标与边框接触时,我执行以下操作:
- 隐藏精灵光标
- 显示本机光标
- 将本机光标的位置设置为精灵光标的位置(这不再正常工作)
我觉得对此有一个简单的数学解决方案,但我无法弄清楚(我已经尝试过......但是......)。
我希望我的问题不是太模糊,并且我提供了足够的信息!