Tag: 顶点缓冲区

什么时候VBO比“简单”的OpenGL原语(glBegin())更快?

经过多年的关于顶点缓冲区对象(VBOs)的听取,我终于决定尝试一下(我的东西通常不是性能的关键,显然…) 我将在下面描述我的实验,但是为了简单起见,我在“简单”直接模式(glBegin()/ glEnd()),顶点数组(CPU端)和VBO(GPU端)之间看到了难以区分的性能,渲染模式。 我想明白为什么会这样,在什么样的条件下,我可以期望看到维也纳各组织显着地超越了他们原始的双关语的祖先。 实验细节 对于实验,我生成了大量点的(静态)三维高斯云。 每个点都有与之相关的顶点和颜色信息。 然后,我以相当的“轨道”行为在相继的帧中围绕云端旋转相机。 再次,点是静态的,只有眼睛移动(通过gluLookAt())。 数据在任何渲染之前生成一次,并存储在两个数组中以用于渲染循环。 对于直接渲染,整个数据集呈现在单个glBegin()/ glEnd()块中,每个glColor3fv()和glVertex3fv()都包含一个单独的调用。 对于顶点数组和VBO渲染,整个数据集都是用一个glDrawArrays()调用渲染的。 然后,我简单地运行一分钟左右,然后用高性能定时器测量平均FPS。 性能结果## 如上所述,我的台式机(XP x64,8GB RAM,512 MB Quadro 1700)和我的笔记本电脑(XP32,4GB RAM,256 MB Quadro NVS 110)的性能无法区分。 然而,它的确按照预期的分数进行了缩放。 显然,我也禁用了vsync。 笔记本电脑运行的具体结果(呈现w / GL_POINTS): 在glBegin()/ glEnd(): 1K点 – > 603 FPS 10K – > 401 FPS 100K – > 97 FPS 1M点 – > 14 FPS 顶点数组(CPU端): 1K点 […]