OpenGL:绘制1920 * 1080 quad = -5000 FPS?

时间:2010-10-14 21:44:06

标签: opengl

我在这里做错了吗?

我使用glRectf( -1, -1, 1, 1 )

在整个屏幕上绘制四边形

我的程序的FPS大约下降了5000。

  • 发生了什么事?

这是我的OpenGL初始化:

  glMatrixMode( GL_PROJECTION );
  glLoadIdentity();
  glViewport( 0, 0, width, height );
  glOrtho( 1, -1, 1, -1, 1, -1 );
  glMatrixMode( GL_MODELVIEW );
  glDisable( GL_DEPTH_TEST );

2 个答案:

答案 0 :(得分:6)

1920x1080是很多像素。对于Travis G建议的代码片段,7-11 fps似乎相当快:

for (int i = 0; i < 1000; ++i)
    glRectf(-1, -1, 1, 1);

我们来算一算:

1920 * 1080 * 1000 * 11像素/ 1秒= 22.8 Gpix / s

维基百科在这里有ATI卡的标题数据表:http://en.wikipedia.org/wiki/Comparison_of_AMD_graphics_processing_units和nVidia卡:http://en.wikipedia.org/wiki/Comparison_of_Nvidia_graphics_processing_units

我猜你有一台Radeon HD 5850只是因为它们很受欢迎并且数字合适(5850显然有23 Gpix / s填充率)

答案 1 :(得分:2)

如果glRectf(-1, -1, 1, 1)是你唯一做的事情,那么你就会遇到过早的帧率惊吓的坏情况。 Shawn Hargreaves在his blog上非常清楚地介绍了这一点。

事实是,旋转图形管道并绘制框架需要相当长的时间。与没有绘制任何东西(我怀疑你正在做)相比,帧速率将大幅下降,因为执行任何比执行 no 要昂贵得多。

要测试我的假设,请尝试:

for (int i = 0; i < 1000; ++i)
    glRectf(-1, -1, 1, 1);

然后查看您的帧率是否发生了变化。它可能不会。