【发布时间】:2014-01-21 12:38:37
【问题描述】:
我想把网格切成小块。所以我遇到了一个编程问题:如何有效地将新的切割节点添加到原始网格 VAO(顶点数组缓冲区)中?随着切割过程的进行,同时创建了更多的新切割节点。这意味着每一帧都创建了许多新节点。我是否需要通过在每一帧插入新的顶点和索引到 VBO 和 IBO 来重新排列 VBO(顶点缓冲区对象)和 IBO(索引缓冲区对象)的结构?有人对如何更有效地切割网格和更新 VAO 有一些好的想法吗?
【问题讨论】:
-
opengl 与编辑模型的几何形状无关,您必须澄清您的问题。
-
@user3072616 如果您的网格切割没有将任何新顶点添加到网格中,那么您只需使用新拓扑更新关联的索引缓冲区。但是,如果引入新顶点,则需要同时更新数组缓冲区和索引缓冲区。由于听起来您是在 CPU 上执行此操作,因此我建议使用
glBufferData更新缓冲区,尤其是在它们更改大小时。至于每帧需要更新什么,这取决于哪些数据发生了变化。如果它只是拓扑(索引),你可以让你的顶点缓冲区保持不变。