用OPENGL画1000个多边形,刷新率就严重下降,哪儿的有关问题
用OPENGL画1000个多边形,刷新率就严重下降,哪儿的问题?
参照NEHE的例子,在绘制场景里面加入
for(int i=0; i <1000; i++)
{
glBegin(GL_QUADS);
glVertex3f(-1.0f, 1.0f, 0.0f);
glVertex3f( 1.0f, 1.0f, 0.0f);
glVertex3f( 1.0f,-1.0f, 0.0f);
glVertex3f(-1.0f,-1.0f, 0.0f);
glEnd();
}
或者显示几个茶壶,刷新率从85降到30几了,
我的电脑打CS,魔兽都很流畅,这里为什么这么慢,是什么问题呢?
------解决方案--------------------
大量顶点最好使用显示列表或顶点数组,尤其是你这样重复大量顶点的。
------解决方案--------------------
显卡驱动更新了没有?OpenGL程序用Windows默认驱动不行。
------解决方案--------------------
显卡速度目前瓶颈在 总线速度上
要尽量减少提交次数,就是说一样的东西,最好一次全部提交,不要一个一个提交
就像2楼说得那样
------解决方案--------------------
要用网格
------解决方案--------------------
glMapBuffer
glUnmapBuffer
make use of video memory...
------解决方案--------------------
像这么写的话,再牛的显卡,再牛的驱动也帮不上什么忙。
像2楼说的,glBegin和glEnd之间多放点东西。顶点数组都是变量,变量是可以存值的(a[0]不光可以是1,也可以是2的),把算好的东西放里面就行了。
------解决方案--------------------
是带宽的问题,用顶点缓冲技术可以解决。
参照NEHE的例子,在绘制场景里面加入
for(int i=0; i <1000; i++)
{
glBegin(GL_QUADS);
glVertex3f(-1.0f, 1.0f, 0.0f);
glVertex3f( 1.0f, 1.0f, 0.0f);
glVertex3f( 1.0f,-1.0f, 0.0f);
glVertex3f(-1.0f,-1.0f, 0.0f);
glEnd();
}
或者显示几个茶壶,刷新率从85降到30几了,
我的电脑打CS,魔兽都很流畅,这里为什么这么慢,是什么问题呢?
------解决方案--------------------
大量顶点最好使用显示列表或顶点数组,尤其是你这样重复大量顶点的。
------解决方案--------------------
显卡驱动更新了没有?OpenGL程序用Windows默认驱动不行。
------解决方案--------------------
显卡速度目前瓶颈在 总线速度上
要尽量减少提交次数,就是说一样的东西,最好一次全部提交,不要一个一个提交
就像2楼说得那样
------解决方案--------------------
要用网格
------解决方案--------------------
glMapBuffer
glUnmapBuffer
make use of video memory...
------解决方案--------------------
像这么写的话,再牛的显卡,再牛的驱动也帮不上什么忙。
像2楼说的,glBegin和glEnd之间多放点东西。顶点数组都是变量,变量是可以存值的(a[0]不光可以是1,也可以是2的),把算好的东西放里面就行了。
------解决方案--------------------
是带宽的问题,用顶点缓冲技术可以解决。