我读到过,让涉及渲染的 3D 程序在渲染之间休息一下是个好主意。这是真的?这会减少 CPU 负载还是无关?
如果是这样,您推荐什么方法?此外,这是否与帧率上限有关,即上限为 60 fps,如果没有时间渲染另一帧,请休息并等待,直到我们需要渲染另一帧以满足 60fps 标记。
我正在使用 OpenGL 和 C++。
最佳答案
是的,限制帧率可以减少 CPU 负载。
此外,如果您的帧率为 2000 fps,您的显示器将不会显示每一帧,通常只有 60fps。 http://en.wikipedia.org/wiki/Refresh_rate
我推荐以下方法(使用boost日期时间和线程库的代码):
#include <boost/thread.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
long desiredFps=60;
void drawLoop() {
using namespace boost;
using namespace boost::posix_time;
ptime lastDraw = microsec_clock::universal_time();
while( true ) {
ptime now = microsec_clock::universal_time();
long diff = (now-lastDraw).total_microseconds();
long desiredDiff = 1000000/desiredFps;
if( diff < desiredDiff ) {
this_thread::sleep(microseconds(desiredDiff-diff));
}
draw();
lastDraw = now;
}
}
关于c++ - 渲染场景后让 CPU 休息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8904352/