我有一个 3d 网格(稀疏八叉树),其中每个叶子(最深节点)存储一个带颜色的 3d 点。我想将整个八叉树转换为 3d 点(顶点缓冲区)的线性数组,可以直接上传到 OpenGL。
以一种天真的方式,我可以遍历八叉树的所有节点并填充线性数组。
现在,我面临的问题是,当我向稀疏八叉树添加新的 3d 点并想要更新顶点缓冲区时,我必须遍历整个八叉树才能将数据导入 OpenGL。
当只更新/添加了几个点时,有谁知道如何避免完全迭代?
我能想到的唯一方法是记住八叉树中的哪些元素已添加,并将它们直接附加到顶点缓冲区数组。这会更好,但是当我从八叉树中删除一个元素时就不起作用了。
我使用 C++。