|

楼主 |
发表于 2009-9-6 21:34:00
|
显示全部楼层
Re: DX框架 什么也不渲染 为什么FPS最高只有80多,玩大型网
楼上说的D3DPRESENT_INTERVAL_IMMEDIATE 的确有效;
不过最近在FPS计算上,又发现了一个诡异的问题,不知道各位有没有碰到过
同样的场景, 用以下两种方法计算FPS
第一种方法(老师教的): FPS = 1.0f/ 每一次渲染的时间差;然后累加求平均,每一秒更新一次(也可以直接显示结果一样FPS在60多~)
第二种方法(框架演示,龙书上都这样做): 当时间>=一秒时, FPS = 一秒钟渲染的次数N/ 渲染N次的时间(差不多一秒)
FPS 在600~900左右
想想两种方法理论上都是对的, 为啥结果差那么多呢....
第一种方法:
static float lastSec = timeGetTime()/1000.f;// 上一秒刷新FPS的时间
static float preTime = timeGetTime()/1000.f;// 上一次执行该函数的时间
float curTime = timeGetTime()/1000.f; // 当前的时间
if(curTime-preTime!=0)
m_fps = 1.f/(curTime-preTime);
preTime = curTime;
第二种方法:
static float lastSec = timeGetTime()/1000.f;// 上一秒刷新FPS的时间
float curTime = timeGetTime()/1000.f; // 当前的时间
m_frameCnt++;
if(curTime-lastSec>1.0f) // 每秒钟更新一次FPS, 数值为一秒钟内的渲染次数
{
m_fps = (float)m_frameCnt / (curTime-lastSec);
lastSec = curTime;
m_frameCnt = 0;
}
|
|