许多 QGLMaterial 项目的 openGL 性能不佳

Bad openGL performance with many QGLMaterial items

在一个项目中,我想用不同的颜色渲染很多形状。 我使用 QGLMaterial 创建形状的颜色,并使用以下命令将形状添加到 QGLBuilder:

//Build SceneNode
m_lpBuilder->newSection();
...
m_lpBuilder->currentNode()->setMaterialIndex(idxMaterial); //idx in range of 0 to 1000
m_lpBuilder->currentNode()->setEffect(QGL::LitMaterial);

当我只有几种颜色 (QGLMaterial) 时,场景渲染速度非常快,但如果有大量颜色,则渲染速度非常慢。

有没有办法改善这个?

强烈推荐直接使用OpenGL。每次手术的费用会更加明显。

这里很可能 Qt 改变了一个 Uniform 并在每次使用不同的 material 渲染时调用 DrawArrays,而正确的方法是将颜色设为顶点属性并将所有几何图形放入相同的 VAO。也许用Qt可以实现,但我不知道怎么实现。