我想知道如何让我的应用程序与必须改变很多的3D模型进行交互。例如,我希望能够从应用程序本身自由修改颜色,纹理ID,位置甚至法线。我想每次模型改变时重新上传模型(glBufferData),或每一帧,但这对我来说似乎是一种记忆密集型。
另外,我不太确定我应该让一个类访问主机内存中缓冲区的一部分。示例:具有属性的类“Shape”,可以随时修改它们,修改缓冲区包含的内容。为此,我不知道从哪里开始。我必须指出,我需要在这些类中拥有更多无法发送到GPU的属性。我可以研究哪些提示/技巧?
编辑:我在Buffer Object Streaming上发现了这篇文章,并且觉得使用glBufferData和glBufferSubData将数据流传输到GPU非常容易。我仍然无法找到在缓冲区中定义对象的好方法。
我研究创建自己的类“SubArray”,其中包含CPU内存中的数组,偏移量和长度。它有一个索引器,可以验证索引,如果不在正确的范围内则抛出异常,但是我觉得使用这个方法感觉不太舒服,因为我不能改变一个简单对象的块大小(添加顶点)。