glColorPointer试图提高fps
|
我终于达到了可以为顶点添加颜色的地步。但是现在我想提高FPS率。这是目前的情况。我有大量的顶点(〜200000),每个顶点都可以属于〜150类之一。每个类别因其颜色而异。我目前正在绘制我的顶点,例如:
glEnableClientState(GL_VERTEX_ARRAY)
glBindBufferARB(GL_ARRAY_BUFFER_ARB, self.bufferVertices)
glVertexPointer(3, GL_FLOAT, 0, None)
glEnableClientState(GL_NORMAL_ARRAY);
glBindBufferARB(GL_ARRAY_BUFFER_ARB, self.bufferNormals)
glNormalPointer(GL_FLOAT, 0, None)
glEnableClientState(GL_COLOR_ARRAY)
glBindBufferARB(GL_ARRAY_BUFFER_ARB, self.bufferColors)
glColorPointer(3, GL_FLOAT, 0, None)
glDrawArrays( GL_POINTS, 0, len(self.vertices) / 3 )
一切正常,FPS约为60。我所有的缓冲区仅在初始化时生成。但是现在,代表每个类别的颜色将迅速改变,大约每毫秒一次。随之颜色也会发生变化,因此我必须为每个绘制重新创建颜色缓冲区,对于200000个顶点,我感觉FPS将接近0。我要实现的修复是保持固定颜色缓冲区,但它们将保留指向其所表示的类的指针,而不是实际的颜色。这样,只有200种颜色可以更改。问题是我不知道如何在OpenGL中实现。这可行吗?任何指针如何执行此操作?
没有找到相关结果
已邀请:
2 个回复
硕歌沙
募磷