答案 0 :(得分:4)
假设您有目标帧速率,您可以测量自上次渲染完成以来的长度。从那里,你可以睡觉targetMsPerFrame - timeElapsed。
答案 1 :(得分:3)
一个字:sleep
答案 2 :(得分:3)
查看有关您的操作系统的WGL_EXT_swap_control或GLX_EXT_swap_control扩展名。这用于控制VSync,但应该以显示器刷新率的一半进行渲染。
答案 3 :(得分:0)
@itzWarty有关于如何设置帧率的正确答案。它被称为“钳制”或“锁定”帧速率。
但你为什么要那样做呢?如果你试图避免占用资源,那么夹紧帧率是好的。
否则你可能希望让帧率尽可能快,以便让那些拥有极佳鸣喇叭的人觉得他们不会浪费他们的钱。在这种情况下,您需要使动画基于时间而不是基于帧。即根据自上一步骤以来经过的时间来缩放动画步骤。 E.g。
x += dx * (timeNow - timePrev) / typicalDuration; // pseudoCode