OpenGL渲染多个网格实例

时间:2015-06-17 22:17:28

标签: opengl

我开始学习OpenGL,现在我将尝试自己开发一些东西并且遇到疑问。

我将渲染具有大约50k基元(圆柱体,立方体,圆锥体等)的模型。其中不到1/4是“独特的”,我的意思是,具有相同的尺寸,但不同的定位和旋转。所以我想我可以用某种方式填充只有基本顶点的数据缓冲区,然后用单独的变换矩阵绘制它们。

根据我的阅读,我应该使用缓冲区作为顶点和缓冲区用于索引,所以我不会浪费内存存储重复的顶点。

所有这些都存储在一个大的缓冲区中(因为我读到如果单个缓冲区不超过1~3mb的限制,则效率更高)。

要绘制它们我正在尝试使用glDrawElements,但由于它们都在一个缓冲区中,我无法更新单个矩阵以更新着色器,因此它们可以将每个网格绘制在正确的位置。

一种解决方案是使用数千个小缓冲区,然后更新glDrawElements调用之间的矩阵。

另一个将丢弃索引缓冲区并仅存储顶点,因此我可以使用glDrawArrays绘制它们,这允许我只绘制缓冲区的一小部分。

我上面说的一切都错了?哪个选项会带来更好的性能?有更好的方法吗?

0 个答案:

没有答案