简单的问题,为什么对象文件包含法线,你可以直接计算法线吗?
如果我是正确的,我只需要在矢量point1-point2和point1-point3之间进行交叉产生,这样可以节省我从文件中读取它们的时间。
编辑:
尝试更具体,这是我找到的文件,我想使用它:
g cube
v 0.0 0.0 0.0
v 0.0 0.0 1.0
v 0.0 1.0 0.0
v 0.0 1.0 1.0
v 1.0 0.0 0.0
v 1.0 0.0 1.0
v 1.0 1.0 0.0
v 1.0 1.0 1.0
vn 0.0 0.0 1.0
vn 0.0 0.0 -1.0
vn 0.0 1.0 0.0
vn 0.0 -1.0 0.0
vn 1.0 0.0 0.0
vn -1.0 0.0 0.0
f 1//2 7//2 5//2
f 1//2 3//2 7//2
f 1//6 4//6 3//6
f 1//6 2//6 4//6
f 3//3 8//3 7//3
f 3//3 4//3 8//3
f 5//5 7//5 8//5
f 5//5 8//5 6//5
f 1//4 5//4 6//4
f 1//4 6//4 2//4
f 2//1 6//1 8//1
f 2//1 8//1 4//1
编辑2:
答案 0 :(得分:2)
你可以计算法线,但计算它们需要时间。当你有很多网格并且必须以60 fps(或更高)渲染时,将预先计算的法线加载到GPU中的效率更高。也可以在矢量point1-point2和point1-point3之间交叉产生,只是给出了正常面。要获得Goraud着色所需的每顶点法线,必须在每个顶点平均面法线。所以你可以看到计算越来越深。