struct VertexFVF
{
float x, y, z; //坐标
float nx, ny, nz; //法向量
DWORD color; //顶点颜色
DWORD specular; //反射光颜色
float u, v; //纹理坐标
};数了一下,这里一共有四个顶点,应该是矩形的四个角,肯定什么地方有顶点索引的记录,往前翻了翻,果然发现顶点索引记录。
至此,顶点和纹理数据都知道了,先写了个小程序验证了一下,结果是画了个一个黑矩形出来,和在GameViewer里看到的一样,看了看表也差
不多到吃饭的时间了,吃过饭再进行后面的分析吧^_^
<待续>
ps.
顺便分析了一下GameViewer的模型文件,
文件头四个字节为文件标识,后面是世界矩阵啥的。
从0x58开始是顶点信息,以0结尾,
再后面是顶点索引记录,同样以0结尾,
接着有一个数值标识用到的纹理文件名长度,
中间不知道为啥要空三个0,
然后是纹理文件名
贴图名
未知(字节不定,以0x0000803f再加8个不知道干啥的字节结尾)
顶点数(DWORD)
顶点数据(前面提到的VertexFVF)
索引数(DWORD)
索引数据(UINT16)
另外,
英雄传说6中specular这个东东比较特殊,
看了一下解出来的map.vs,
specular是直接加上去的,
结果就产生了漂亮而且效率高的假光照