我正在进行渲染,每帧多次调用 glBufferSubData 。
以下是我在代码中的使用方法:
super
我问,因为我有不同类型的元素,每个都有自己的矢量来表示vbo数据(我在我的程序中使用1个VBO(用于颜色,UV,位置和1个VAO)和我我做渲染,如:
1。)将元素1的向量加载到缓冲区
2。)渲染元素1
3.)将元素2的向量加载到缓冲区
4。)渲染元素2
...
是这样做的正确方法吗?
答案 0 :(得分:1)
正确的方法取决于您的使用方案。当数据大部分是静态的时,最好的方法是将数据上传一次到GPU。这可以通过为每个对象创建一个VBO,或者将所有对象一起打包到一个VBO中来完成。
如果数据是完全动态的(并且每帧都在变化),那么无论如何都必须上传数据,因此只使用一个缓冲区就可以了。但是你仍然应该尝试与上传数据(glBufferSubData
)相处并避免全部分配新内存(glBufferData
)。例如,您可以选择足够大的缓冲区初始大小以适合所有数据。另一种选择是使用persistently mapped buffer。