GL_ARRAY_BUFFER或GL_ELEMENT_ARRAY_BUFFER绑定的顶点缓冲对象最大大小是否有限制?
原本,我正在绘制一个由16个子网格组成的网格。对于每个子网格,我创建了一个顶点缓冲区,在渲染阶段期间,我调用了glDrawElements。 在iOS模拟器上这很好用,但是当我尝试渲染到我的设备时,屏幕不断闪烁且网格没有显示。
然后我阅读了一些资料,并发现在渲染阶段中不应该过多地调用glDrawElements。 我尝试将所有子网格合并到一个顶点缓冲区中。 绑定到GL_ARRAY_BUFFER的缓冲区包含3969个顶点,其中每个顶点包含20个浮点数。因此,该缓冲区的大小为317520字节。 绑定到GL_ELEMENT_ARRAY_BUFFER的索引是16425个shorts。因此,该缓冲区的大小为32850字节。
在OpenGL维基上,它说"根据一个nVidia文件,1MB到4MB是一个不错的大小"。
在绑定每个缓冲对象和调用glDrawElements之后,我打印出glGetError的结果,并且没有看到任何错误。 然而,我的网格没有正确显示。似乎只有第一个网格被正确绘制。我实现时是否存在任何问题?如果需要额外的信息来回答这个问题,请让我知道。如果在理论上没有什么问题,也许我实现时犯了一个错误。