我尝试创建一个窗口,无论分辨率如何,所有对象都移动相同的相对距离。我将视口设置为-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秒。
我已尝试实施一个帧限制器,以确保它不会滞后,导致它移动得更慢,但没有做任何事情。
答案 0 :(得分:1)
使用不依赖于窗口尺寸的常量值。
剪辑音量并不关心每个方向上有多少像素; (-1,-1)处的对象始终位于左下角,(1,1)始终位于右上角。这同样适用于速度。如果您确实想要使用窗口尺寸,请调用glOrtho
来更改剪裁音量。