我正在处理一些OpenGL照明教程,现在主题是漫反射照明。想知道可以从"表面"计算法向量。完全由他们的位置? (即对于每个三角形,得到p1 - p2和p1 - p3然后交叉产生它们。)
我是否认为OpenGL的并行处理性质(顶点不知道他们与谁在一起,并且没有办法按顺序排列他们的处理)是正确的?并且这由提供它们的实际顶点模型(即包含x,y,z,nx,ny,nz的顶点数据)更有效地处理,因为它主要是静态的,因此计算在模型生成(非运行时)中完成着色器资源?当动态生成模型和顶点数据时,这会发生变化(让我想一想,能否由几何着色器处理)?
答案 0 :(得分:1)
顶点法线与顶点位置一样不变(也就是说,如果你的位置没有改变,法线也不会改变)。因此,除非顶点位置发生变化(我并不是指通过对它们应用矩阵),否则最好一次计算法线。在CPU上。然后将它们放入网格数据中。
几乎每个艺术包都可以用网格导出顶点法线。
针对您的具体问题,不。顶点着色器和几何着色器都不能生成法线。 GS具有可能能够生成它们的邻接原语,但是对这种生成的限制非常紧张。而且,它会很慢。