如果您希望一次在视锥体中渲染数千个多边形的大型景观以及用户视点不断变化,使用VAO或VBO是否切实可行?
我的意思是,每次玩家的位置或相机旋转发生变化时,您都必须重新计算顶点数据,以便正确剔除任何不再看到的顶点或场景,以保持良好的FPS计数。但是在这样做时,你的FPS计数会下降,因为你正在不断重新打包所有的缓冲区。
在立即模式下使用这两种方法仍然有用吗?
我的猜测是肯定的,因为使用立即模式,你也可以每帧重新计算所有顶点,只是略有不同。可悲的是,我没有太多的背景知识,我很困惑,因为互联网上有关于这个主题的混合信息。
答案 0 :(得分:6)
答案是是,VBO适用于大型多边形渲染任务。不应使用立即模式,因为它是固定功能管道的一部分,并且不推荐使用FFP。
但是你应该不重新计算每一帧的格局并再次将它存储在缓冲区中。有一些方法可以处理这种情况,但是你应该避免每帧都更新VBO,因为这可能会导致资源冲突。
答案 1 :(得分:5)
我的意思是,每当玩家的位置或相机旋转发生变化时,您都必须重新计算顶点数据
不,不。在典型的地形渲染器中,数据被细分为切片。通常这些瓷砖再次细分,并再次实现细节水平。瓦片分开的是它们引用的顶点。所以你有一个大的顶点数组用于地形数据,还有很多用于平铺的索引数组。通过使用正确的索引数组调用glDrawElements,您可以选择要在哪个级别的详细信息中绘制哪些图块。