- 1、本文档共23页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
DirectX10教程15FPSCPU使用率和计时器
PAGE1 / NUMPAGES23
DirectX 10 教程15:FPS,CPU使用率和计时器
原文地址: HYPERLINK /dx10tut15.html Tutorial 15: FPS, CPU Usage, and Timers。
本教程将会介绍三个新类,它们封装了帧频率计数器,CPU使用率计数器和一个高精度的计时器。本教程的代码基于教程12:字体引擎。
第一个新类是FpsClass。FpsClass记录程序运行时每秒的帧数。知道帧频可以让我们对程序的性能有一个直观的认识,它也是衡量显卡渲染速度的一个工业标准度量值。当我们实现了一个新功能时,可以通过帧频看出这个功能对程序速度的影响。如果这个新功能将帧速降低了一半,你就会立即意识到出了大问题。计算机标准的帧频为60fps,低于60fps就被认为性能下降,而低于30fps时能被人眼明显地感觉到。
第二个新类是CpuClass。这个类记录cpu使用率,这样我们就可以在屏幕上显示这个信息。知道cpu使用率就可以帮助我们调试代码的效率,它提供了一个简单而快速的方法衡量我们的代码或算法的优劣。
最后一个类是TimerClass。它是一个高精度的计时器。用于记时事件,确保所有组件能在一个通用的时间系统中同步。
框架
本教程中包含三个新类的框架如下图所示:
首先依次来看一下三个新类。
Fpsclass.h
FpsClass只是个包含时钟的计数器,它记录了一秒中内会绘制几帧,并进行持续更新。
////////////////////////////////////////////////////////////////////////////////
// Filename: fpsclass.h
////////////////////////////////////////////////////////////////////////////////
#ifndef _FPSCLASS_H_
#define _FPSCLASS_H_
/////////////
// LINKING //
/////////////
#pragma comment(lib, winmm.lib)
//////////////
// INCLUDES //
//////////////
#include windows.h
#include mmsystem.h
////////////////////////////////////////////////////////////////////////////////
// Class name: FpsClass
////////////////////////////////////////////////////////////////////////////////
class FpsClass
{
public:
FpsClass();
FpsClass(const FpsClass);
~FpsClass();
void Initialize();
void Frame();
int GetFps();
private:
int m_fps, m_count;
unsigned long m_startTime;
};
#endif
Fpsclass.cpp
///////////////////////////////////////////////////////////////////////////////
// Filename: fpsclass.cpp
///////////////////////////////////////////////////////////////////////////////
#include fpsclass.h
FpsClass::FpsClass()
{
}
FpsClass::FpsClass(const FpsClass other)
{
}
FpsClass::~FpsClass()
{
}
Initialize方法将计数器设置为0并开启一个计时器。
void FpsClass::Initialize()
{
m_fps = 0;
m_count = 0;
m_startTime = timeGetTime();
return;
}
Frame方法在每一帧调用,这样能每一帧加1,如果时间已经流逝了1秒,则将帧数保存在m_fps变量中,然后重新将计数器归0并重新开启计时器。
void FpsClass::Frame()
{
m_count++;
if(timeGetTime() = (m_startTime + 1000))
{
m_f
文档评论(0)