OpenGL根据窗口大小转换对象

时间:2016-07-03 17:04:23

标签: java opengl lwjgl

我尝试创建一个窗口,无论分辨率如何,所有对象都移动相同的相对距离。我将视口设置为-1,1,1,-1的边界,并按照

计算像素距离
int number_of_pixels = 10;
float x_pixel_value = (1f / (window.getWidth() / 2)); 
float move_x_value = x_pixel_value * number_of_pixels;

float y_pixel_value = (1f / (window.getHeight() / 2)); 
float move_y_value = y_pixel_value * number_of_pixels;

距离似乎可以正确缩放,但是当我以微小的分辨率移动物体时,与分辨率更大相比,移动速度要快得多。 例如,物体需要2秒才能在720p处完全向下移动,但在100x100处需要0.3秒。

我已尝试实施一个帧限制器,以确保它不会滞后,导致它移动得更慢,但没有做任何事情。

Larger resolution

Smaller resolution

1 个答案:

答案 0 :(得分:1)

使用不依赖于窗口尺寸的常量值。

剪辑音量并不关心每个方向上有多少像素; (-1,-1)处的对象始终位于左下角,(1,1)始终位于右上角。这同样适用于速度。如果您确实想要使用窗口尺寸,请调用glOrtho来更改剪裁音量。