OpenGL 帧率

Posted

技术标签:

【中文标题】OpenGL 帧率【英文标题】:OpenGl Frame rate 【发布时间】:2009-09-02 21:56:43 【问题描述】:

测量 OpenGL 程序的帧速率的最佳方法是什么?

【问题讨论】:

【参考方案1】:

在你的主循环开始时设置一个计时器并测试返回那里需要多长时间。

在windows下你会做这样的事情:

double oldTime  = 0.0.
while( !exit )

    __int64 counter;
    QueryPerformanceCounter( (LARGE_INTEGER*)&counter );

    __int64 frequency;
    QueryPerformanceFrequency( (LARGE_INTEGER*)&frequency );

    double newTime      = (double)counter / (double)frequency;
    double frameRate    = 1.0 / (newTime - oldTime);
    oldTime         = newTime;

    // Rest of your game loop goes here.    

【讨论】:

我所说的只是用实际代码所以+1(虽然它确实假设Windows......) 不是他提到的平台或语言......所以它的猜测时间;)【参考方案2】:

测量经过的时间并计算帧数。 一个除以另一个给出帧速率。

当经过的时间达到一秒或更多时,如果您想在更长的时间段内对其进行平均,则重置两个计数并重新开始。

【讨论】:

如果我使用 glut 并且我调用了 glutIdleFunc(oneFrame);我假设每一帧都会调用 oneFrame 这是正确的吗? 我相信是这样,但我对 glut 不太熟悉【参考方案3】:

SPF (Seconds Per Frame) 是一个提供更多信息的指标。

【讨论】:

【参考方案4】:

如果您使用的是 Windows,请使用 Fraps。

http://www.fraps.com/

【讨论】:

以上是关于OpenGL 帧率的主要内容,如果未能解决你的问题,请参考以下文章

OpenGL帧率:与窗口大小的关系

使用专用显卡进行 OpenGL 渲染时帧率降低

OpenGL ES 2.0:非常不一致的帧率

在 OpenGL ES iOS 中绘制多个纹理时帧率下降

OpenGL ES

Opengl_7_ *SwapBuffers