DirectX 的进展 (1)
今天看到 Mesh 了,还是挺不容易的。虽说现在还在很基础的渲染上,但好歹现在也可以画一个会转会反光的三角形了。
到目前为止,最大的问题仍是 DirectX 那繁复的命令,有些确确实实既不好记,更不知道到底有什么用。把这些换成其他的也没有任何变化,但有时明明感觉是正确的代码,却达不到希望的效果。
而至今还没有搞懂的问题是:Normal。Normal 应该是法线吧,那么每一个平面的法线向量应该是相同的吧。但是第一个问题是,Normal 是在 Vertex 上定义的,那么,当这个 Vertex 是几个面的一个交点时,Normal 应该写成哪个面的法线向量呢?比如:一个正四面体,使用 TriangleStrip 方法画出,那么任意一个顶点都是三个面共用。如果我将某个面的三个点的 Normal 都写成这个面的法线向量,那么就只有这一个面会亮;如果将 4 个点的 Normal 写成从四面体中心指向外,那所有面都不亮!难道说,只能用 TriangleList 的方法,定义 12 个点吗?!
第二个问题,就是 Normal 向量。按理说,法线应该是一个物体表面指向外的垂直射线。但 DirectX 在计算光亮的时候是“计算光的方向向量与法线向量的夹角,角度越小越亮”。那么一个球的所有表面法线岂不是都是指向圆心的?
一幅截图,很简陋: