[英]how to convert from octree to a linear array with cache?
我有一个3d网格(稀疏八叉树),其中每个叶子(最深的节点)都存储一个带有颜色的3d点。 我想将整个八叉树转换为3d点的线性数组(顶点缓冲区),可以将其直接上传到OpenGL。
以一种幼稚的方式,我可以遍历八叉树的所有节点并填充线性数组。
现在,我面临的问题是,当我向稀疏八叉树添加新的3d点并想更新顶点缓冲区时,我必须遍历整个八叉树才能将数据导入OpenGL。
没有人有一个想法,当只更新/添加了几个点时,如何避免整个迭代?
我能想到的唯一方法是记住在八叉树中添加了哪些元素,并将其直接添加到顶点缓冲区数组。 这会更好,但是当我从八叉树中删除一个元素时,它将无法工作。
我使用c ++。
也许您可以在样本内保留一个索引(其在顶点缓冲区中的位置)。 当您从八叉树中删除样本时,这将允许您从阵列中删除样本。
因此整个算法将如下进行:
vertex_array
插入(点,样本)
删除(样本)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.