渲染场景后让CPU休息

Sat*_*own 2 c++ opengl render cpu-usage

我已经读过,提供一个3D程序是一个好主意,其中渲染涉及渲染之间的休息.这是真的?这会降低CPU负载还是不相关?

如果是这样,你推荐什么方法?此外,这是否与帧速率上限有关,即上限为60 fps,如果不是时候渲染另一帧,请休息并等待,直到我们需要渲染另一帧以达到60fps标记.

我正在使用OpenGL和C++.

And*_*uel 5

是的,限制帧速率可以减少CPU负载.

此外,如果你有2000 fps,你的显示器不会显示每一帧,通常只有60fps. http://en.wikipedia.org/wiki/Refresh_rate

我推荐以下方法(使用提升日期时间和线程库的代码):

#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;
    }
}
Run Code Online (Sandbox Code Playgroud)