游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1785|回复: 2

DX中为什么最大帧总是保持在60帧左右,计算有问题吗?还

[复制链接]

29

主题

107

帖子

107

积分

注册会员

Rank: 2

积分
107
发表于 2010-7-24 12:21:00 | 显示全部楼层 |阅读模式
        DWORD currTime(timeGetTime());//当前时间
        static float lastTime((float)timeGetTime());//上次时间
        float timeDelta((float(currTime) - lastTime) /1000.0f);//消耗的时间
        static float m_FpsCount = 0;//总帧数
        static float m_TimePasted = 0;//总消耗时间
        static float m_Fps = 0;//帧数
        m_FpsCount++;
        m_TimePasted+=timeDelta;
        if(m_TimePasted>=1.0f)                        //每秒计算当前帧数
        {
                m_Fps = m_FpsCount/m_TimePasted;
                m_FpsCount = 0.0f;
                m_TimePasted = 0.0f;
        }
        char m_strFps[32];
        sprintf_s(m_strFps, "%.4f", m_Fps);
          //为什么m_strFps保持最大60帧
        lastTime = (float)currTime;//的到上一次的时间

1

主题

10

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2010-7-24 12:48:00 | 显示全部楼层

Re:DX中为什么最大帧总是保持在60帧左右,计算有问题吗?

设置D3DPRESENT_PARAMETERS结构的时候,也就是创建Direct3D设备对象之前
把 PresentationInterval 参数设置成  D3DPRESENT_INTERVAL_IMMEDIATE

D3DPRESENT_PARAMETERS d3dpp;
d3dpp.PresentationInterval       = D3DPRESENT_INTERVAL_IMMEDIATE;

PresentationInterval:如果设置为D3DPRENSENT_INTERVAL_DEFAULT,则说明在显示一个渲染画面的时候必要等候显示器刷新完一次屏幕。例如你的显示器刷新率设为80HZ的话,则一秒内你最多可以显示80个渲染画面。另外你也可以设置在显示器刷新一次屏幕的时间内显示1到4个画面。如果设置为D3DPRENSENT_INTERVAL_IMMEDIATE,则表示可以以实时的方式来显示渲染画面,虽然这样可以提高帧速(FPS),如果速度过快却会产生图像撕裂的情况,但当游戏完成时,帧速度一般不会过快。

29

主题

107

帖子

107

积分

注册会员

Rank: 2

积分
107
 楼主| 发表于 2010-7-24 13:15:00 | 显示全部楼层

Re:DX中为什么最大帧总是保持在60帧左右,计算有问题吗?

兄弟谢谢你了,解释的很棒!能和你加为好友吗?我的QQ:444729106。一起奋斗
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-8 11:10

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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