Don*_*urb 10 opengl performance vbo
我正在渲染一些网格(有时超过500),我想知道解决这个问题的最佳方法.创建500个VBO是否毫无意义,然后如果它们通过视锥和可见性测试,则渲染它们.有没有更有效的方法来做到这一点?我希望最大限度地提高性能.
ssu*_*ube 11
为了回答你的问题,是的,很多维多利亚州的公司都会放慢速度.更多的多边形通常会减慢渲染速度,但更多的绘制调用会受到更大的影响.您希望最小化状态更改和绘制,以及您拥有的缓冲区数量(以及内存使用).
我建议先看一下缓冲区,然后弄清楚你需要多少缓冲区.如果可以批处理/实例几何,则将静态几何合并到单个缓冲区中,更有效地重用缓冲区等.
一旦你将缓冲区减少到最小可能,你就会想要使用多种类型的剔除.通过frustrum(可能在八叉树中)和遮挡的可见性可以提供显着的性能提升.主要思想是尽可能快速和简单地取消几何图形的资格,所以你从粗糙测试(八叉树)开始,然后稍微更详细(可能是AABB和/或简化的船体),然后是遮挡,然后实际绘制.
这是关于截头剔除的一篇很好的文章,它涉及到四边形(并且通过扩展,八叉树).图表,解释和一些示例代码.
OpenGL遮挡剔除文章似乎有点不太常见,尽管GPU Gems中的这篇文章可能是一个很好的起点.