游戏开发论坛

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: snhun

如何控制帧率?

[复制链接]

0

主题

398

帖子

577

积分

高级会员

Rank: 4

积分
577
发表于 2011-5-3 15:04:00 | 显示全部楼层

Re: Re: Re:如何控制帧率?

snhun: Re: Re:如何控制帧率?


游戏逻辑是100次/秒
开启垂直同步,画面刷新率恒定在60Hz

你每秒发100张画面,让60Hz的显卡去渲染,它能正常渲染?
才怪呢。


这不还是按帧率么?

180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
 楼主| 发表于 2011-5-3 17:03:00 | 显示全部楼层

Re:如何控制帧率?

CS《反恐精英》1.6,知道吧?

关闭垂直同步,fps=100.0fps
开启垂直同步,fps=60.0fps

这代码怎么写的?谁知道?

67

主题

390

帖子

392

积分

中级会员

Rank: 3Rank: 3

积分
392
发表于 2011-5-3 19:13:00 | 显示全部楼层

Re: Re:如何控制帧率?

snhun: Re:如何控制帧率?

CS《反恐精英》1.6,知道吧?

关闭垂直同步,fps=100.0fps
开启垂直同步,fps=60.0fps

这代码怎么写的?谁知道?


按我的理解,关闭垂直同步就是自己控制帧率,假如想每秒100帧,就判断一帧的时间消耗是否比100帧所需的时间快,如果快的话,就Sleep()
开启垂直同步就是让显示器均匀显示画面,每秒按60帧的速度显示。
不过我不大清楚,开启垂直同步这种情况下,一秒内游戏实际循环了多少次。

22

主题

98

帖子

98

积分

注册会员

Rank: 2

积分
98
QQ
发表于 2011-5-5 10:49:00 | 显示全部楼层

Re:如何控制帧率?

EnumDisplaySettings可以获取当前屏幕刷新率。
用timeSetEvent来控制帧率,sleep的精确度很低,你可以试一下sleep(1),帧率基本就降到60了。
一般来说设了D3DPRESENT_INTERVAL_ONE之后D3D就会把帧率控制为屏幕的刷新率,不用上面这么麻烦。除非你在显卡控制面板里把垂直同步设为关闭,那这个选项就不管用了。

67

主题

390

帖子

392

积分

中级会员

Rank: 3Rank: 3

积分
392
发表于 2011-5-5 11:05:00 | 显示全部楼层

Re: Re:如何控制帧率?

hflong240: Re:如何控制帧率?

EnumDisplaySettings可以获取当前屏幕刷新率。
用timeSetEvent来控制帧率,sleep的精确度很低,你可以试一...


多谢了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-8 06:49

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表