» 您尚未登录:请 登录 | 注册 | 标签 | 帮助 | 小黑屋 |


发新话题
打印

真的有“每秒60帧”这个东西吗?

引用:
原帖由 firesun 于 2007-5-23 08:28 发表
显示设备的刷新,和游戏显示、游戏逻辑的刷新不一定是同步的。尤其是游戏逻辑。

在游戏的底层部分经常能看到这样的语句:

while(1)
{
    显示画面()
    游戏逻辑()
    ++刷新次数
    if(刷新次数=60 and 时间<1000ms )then
    wait()
}
游戏这么写, 就会很卡

原因很简单, 如果500ms内渲染了60次画面, 那么剩下的500ms就是定版.

正确的代码是评估画面之间的delta time, 用这个来计算画面之间物体的移动的距离等.

至于dx/ogl如何显示, 是系统管理的, 当vsync开启的时候, 系统会将当屏幕update的时候最新渲染出来的画面显示出来. 假设均匀的渲染了120个画面, 那么显示刷新率60的系统可能会把所有的偶数画面显示出来.

当vsync关闭的时候, 系统会直接把最新渲染的画面显示出来, 这会导致有时候屏幕画面上下部分不一致, 看起来就是轻微的撕裂.


TOP

发新话题
     
官方公众号及微博