【发布时间】:2023-03-17 04:50:02
【问题描述】:
我正在开发一个 OpenGL ES 应用程序,我需要可视化非常大的网格(大约 700000 个三角形)。问题是我没有足够的 VBO 空间用于这些网格,如果我使用立即渲染,FPS 会下降 60% 或更多(从使用较少三角形的实验中预测)。是否有中间解决方案,我可以将 VBO 的最大尺寸用于部分网格,然后在其余部分使用立即渲染?
【问题讨论】:
我正在开发一个 OpenGL ES 应用程序,我需要可视化非常大的网格(大约 700000 个三角形)。问题是我没有足够的 VBO 空间用于这些网格,如果我使用立即渲染,FPS 会下降 60% 或更多(从使用较少三角形的实验中预测)。是否有中间解决方案,我可以将 VBO 的最大尺寸用于部分网格,然后在其余部分使用立即渲染?
【问题讨论】:
您不可能同时看到所有 700000 个顶点。尝试修剪那些你看不到的并将其余的粘贴在 VBO 中。
它甚至不需要很精确,只要想出一个快速的方法来消除你视野之外的大部分三角形(或在物体后面或靠得太近而无所谓或以其他方式不可见)。
【讨论】:
这是在某种嵌入式或手持平台上吗? 700,000 verts 是一个很大的模型,但它的内存并不多……可能 22 MB,具体取决于您的 verts 包含的内容。您是否可能达到了单个 VBO 的最大大小,而不是 VBO 的内存不足?
您可以将模型拆分为多个 VBO,并为每个块使用一次绘制调用来渲染各个部分。如果您使用索引/剥离三角形,则需要在块之间复制一些顶点。
【讨论】: