我在这里做错了吗?
我使用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 );
答案 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);
然后查看您的帧率是否发生了变化。它可能不会。