绑定到 GL_ARRAY_BUFFER 或 GL_ELEMENT_ARRAY_BUFFER 的顶点缓冲区对象是否有最大大小???
最初,我正在绘制一个由 16 个子网格组成的网格。对于每个子网格,我创建了一个顶点缓冲区,在渲染阶段,我调用了 glDrawElements。这在 iOS 模拟器上运行良好,但是当我尝试渲染到我的设备时,屏幕不断闪烁并且网格不显示。
然后我做了一些阅读,发现你不应该在渲染阶段调用 glDrawElements 太多次。我试图将所有子网格合并到一个顶点缓冲区中。绑定到 GL_ARRAY_BUFFER 的缓冲区包含 3969 个顶点,其中每个顶点包含 20 个浮点数。所以这个缓冲区的大小是 317520 字节。绑定到 GL_ELEMENT_ARRAY_BUFFER 的索引是 16425 短裤。因此,此缓冲区的大小为 32850 字节。
在 OpenGL wiki 上,它说对于顶点缓冲区对象,“根据一个 nVidia 文档,1MB 到 4MB 是一个不错的大小”。
在绑定每个缓冲区对象并调用 glDrawElements 后,我打印了 glGetError 的结果,我没有看到任何错误。但是,我的网格没有正确显示。似乎只有第一个网格被正确绘制。我实现这个的方式有什么可疑的吗?我不想让这个问题太久,所以如果您需要回答这个问题的任何额外信息,请告诉我。如果理论上没有什么似乎是错误的,那么也许我只是在实施它时犯了一个错误。