计算OpenGL程序的曲面法线

时间:2014-12-27 17:49:10

标签: c++ arrays performance opengl optimization

我基本上是使用c ++在OpenGL中创建一个简单的3D地形。

任务是通过计算围绕每个面的顶点的法线来计算面法线。

有两种方法可以实现这一点,我不确定哪种方法在速度方面是正确的。

选项1:有一个计算顶点法线的方法,最终将成为O(n ^ 2)运算。 我将迭代2D数组,抓住每个点并执行计算。然后存储它,以便在下一个操作中检索它。 然后,我将有一个计算表面法线的方法,这将最终成为O((n-1)^ 2)操作,因为我将迭代通过2D数组来获取顶点法线然后将其平均化。

我看到的优点:我可以将顶点法线计算减少一半。 缺点:需要有2种方法,每种方法都在2D数组上进行迭代。我还必须继续访问2D数组。

选项2:有一种方法可以计算表面法线,它可以取一个面,抓住周围的点来计算顶点法线,然后计算表面法线并将其存储在一个数组中。

优点:这里我只需迭代一次2D数组,但我必须重复顶点法线计算。 缺点:我会重复计算顶点法线。对于每个面,我需要做4个顶点计算。 那些家伙会有什么更好的方法?

0 个答案:

没有答案