gpt4 book ai didi

c++ - 网格三角测量 : Seperate vs Nested loop Complexity

转载 作者:行者123 更新时间:2023-11-28 08:02:06 26 4
gpt4 key购买 nike

我为我的模型查看器编写了一个 collada 加载器。

现在编写它循环遍历所有顶点和索引并创建索引和顶点缓冲区,以便我可以渲染网格。

如果模型未进行三角剖分,我有两个选择。我可以在索引写入我的缓冲区时对其进行训练(即计算并添加更多索引以创建三角形)。

或者我可以在写入缓冲区之前对整个网格进行三角剖分,然后让我的缓冲区系统保持原样(它会假设网格是事先进行三角剖分的)。

为了事先对模型进行分段,我需要将整个模型加载到一个链表循环中,并插入新的索引以将 4 个以上的多边形分解成 tirangles。

如果我在编写网格时进行三角剖分,我需要延迟写入 4 个以上的多边形,将它们放入单独的缓冲区中,然后当该缓冲区中包含整个 4 个以上的多边形时,对其进行三角剖分并写入新索引.

这实际上会添加另一个 for 循环,该循环只会在每次遇到 4+ 三角形时触发。

这是迄今为止我写过的最复杂的东西,我真的很难思考哪个方向会更有效。

一个通过复制整个网格使我使用的内存量增加一倍,以便我可以对其进行处理,另一个涉及一个嵌套的 for 循环,该循环仅在遇到 4 个以上的多边形时触发。

任何人都可以就如何在不实际编写和测试这两个选项的情况下衡量这两个选项的复杂性提出任何建议吗?

最佳答案

添加一个内部循环来处理偶然的​​情况就可以了。如果我正确理解您的问题,您将需要测试多边形并根据需要以一种或另一种方式对它们进行三角剖分;有条件执行的内部循环是对此的适当反射(reflect)。

如果您认为内部循环会使您的函数太长/丑陋/难以阅读,您可以编写一个单独的包含内部循环的“triangulate_polygon()”函数,并有条件地调用它。

关于c++ - 网格三角测量 : Seperate vs Nested loop Complexity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11147062/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com