这个问题分为两个(大部分)独立的部分
我目前的设置是我在游戏空间中有很多Object
s。每个都有一个分配给它的 VBO,它保存每个顶点的顶点属性数据。如果Object
想要更改其顶点数据(位置等),它会在内部数组中执行此操作,然后调用glBufferSubDataARB
以更新 GPU 中的版本。
现在我明白这是一件可怕 的事情,所以我正在寻找替代品。一个表现出来的就是有一些管理的东西,一开始有一个大的 VBO,Object
s 可以从它请求空间,并在其中编辑点。这降低了加载 VBO 的开销,但在创建和调试这样的野兽(基本上是整个内存管理系统)时会花费大量的精力/时间。
我的问题((a)部分)是这是否是执行此操作的“最佳”方法,或者是否有我没有想到的更好的方法。
这样的系统应该允许尽可能快地轻松添加/删除顶点和编辑它们。
(b) 部分是关于对每个对象采取的一些简单动作,即旋转和平移。目前我正在移动每个顶点(哎哟),但这必须有更好的选择。我正在考虑将旋转和平移矩阵上传到我的着色器以在那里进行。这看起来不错,但我有点担心更改uniform
变量的开销。这样做最终对我有利吗?变量变化的速度有多快uniform
?