我遇到了一个关于OpenGL的奇怪问题。我下载了一个OpenGL项目(程序),只是用它作为如何设置freeglut和glew的示例代码。
我做的第一件事(在初始化OGL和#34;根据我下载的我的程序中连接"回调之后)是实现FPS计数器。此FPS计数器也被复制到下载的OGL程序,以便能够比较FPS。我已经清空了下载程序中的displayfunc(回调),使其与我实现的那个完全相同(只计算FPS)。
现在这是(我的和下载过的)程序中唯一发生的事情glutDisplayFunc:
int j = 0;
void DisplayCallbackFunc()
{
CalculateFPS();
j++;
}
FPS功能如下所示:
int m_frame = 0;
int m_currtime = 0;
int m_timebase = 0;
char* m_title = new char[24];
void CalculateFPS()
{
/*Calculate FPS values and outputs avg. fps in the titlebar*/
m_frame++;
//get the current time..
m_currtime = glutGet(GLUT_ELAPSED_TIME);
//check if a second has passed..
if (m_currtime - m_timebase > 1000)
{
sprintf(m_title, "Smoke FPS: %4.0f", m_frame*1000.0f/(m_currtime-m_timebase));
glutSetWindowTitle(m_title);
m_timebase = m_currtime;
m_frame = 0;
}
}
我还有一个只调用glutPostRedisplay()的空闲回调函数。
我的问题是我的帧(m_frame)(在我的程序中的FPS计数器功能中)比下载的程序中的帧慢得多。这也导致较低的FPS。差别很大;
下载的程序打印~10 000 000
我的节目打印~60 000
所以我在DisplayCallback函数中添加了一个计数器(在两个程序中),如果我在一秒钟后断开(断点内部"如果"在FPS函数中),下载程序中的计数器比我大得多柜台(8 000 000 vs 50 000)。
所以我的问题;
这是否意味着下载程序中回调函数的调用率高于我程序中的调用率?
在这种情况下,可能的原因是什么,这并不意味着我的程序的性能会比下载的程序差吗?