教程地址
Tutorial 15: FPS, CPU Usage, and Timers
学习记录
这篇文章内容不多,主要是趁着前边的 2D 文字渲染印象还好,就顺便学习了关于 3D渲染中 FPS 和 CPU 使用率的显示。
FPS 的内容我们自己可以通过计数器计算,每一帧对计数器加1,当一秒后将计数器的值赋值给 FPS 的变量同时清零计数器的值以备下一秒的计算。这里我写成了一个方法:
1 | inline int GetFPS(unsigned long &startTime , int &fps , int &tc) { |
这样,我们可以制作出一个并不太精准的 FPS 计数器。这里的 timeGetTime()
方法我们需要导入库 Winmm.lib
。
而 CPU 使用率的话我们则是需要使用一个叫做 pdh 的库,在导入了 pdh.lib
后 ,我们需要去初始化一些变量:
1 | HQUERY hQuery = nullptr; |
HQUERY
是我们的查询器句柄,HCOUNTER
则是计数器句柄。声明变量之后我们需要调用方法来启用他:
1 | status = PdhOpenQuery(nullptr, 0, &hQuery); |
第一个为打开查询,第二个则是为查询添加一个计数器,其中的TEXT("\\Processor(_Total)\\% processor time")
这一段则是我们的计数器路径。现在查询器和计数器都搞定了之后我们依旧将查询的任务写成一个方法:
1 | inline int GetCPUUsage(const bool canSamleUsage , int &usage, unsigned long &lastTime , const HQUERY hQuery , const HCOUNTER hCounter) { |
现在在 Main 里调用:
1 | const string fpsText = "FPS : "; |
显示如下: