.x文件结构分析

        之前在玩directx编程的时候,对于组织3D网格模型数据的文件,我用过几种格式,分别是.x,.obj,.sdkmesh等等,.x文件用得比较多,.obj文件比较简单,.sdkmesh是要用directx SDK里面的工具转化而成的,看SDK文档说推荐用它,因为会比较高效(好久以前看的了,好像是这样)。在这里对.x文件进行分析一下,对于以后使用physX,bullet等做物理模拟碰、撞检测等会有帮助,因为之前看physX SDK里面的sample是对.obj的文件进行解析然后才cook成可以用于检测碰撞的模型的。

1、每个.x文件都是以一个header开头,如下所示。xof代表这是一个.x文件,0302代表.x文件是使用3.2版本的模板,txt代表接下来的.x文件是用text格式存储的,而不是二进制。最后的0032是浮点数的位数是32位。

xof 0302txt 0032

2、在.x文件中,你可以看到很多templates,template定义了如何存储一个数据对象,用户可以自己定义具体的格式,可以把它想象成c++里面的类,template的实例为数据对象。每个template有一个GUID,DirectX用这个大数来识别template。Directx3D中预定义好的template在rmxftmpl.h中,GUID在rmxfguid.h中。模板所允许的数据类型成为可选成员,这些可选成员作为数据对象的子对象来保存,子对象可以是另一种数据类型的引用。每个模板都可以容纳任何类型的数据,任何数据类型的组合都可以在一个模板里面使用。

        下面是一个模板。模板的名字是Header,可以由数字、字符、下划线组成,但是不能用数字开头。第二行是GUID,第三四五行是数据成员

template Header {
 <3D82AB43-62DA-11cf-AB39-0020AF71E433>
 WORD major;
 WORD minor;
 DWORD flags;
}

模板中有一个部分是用户控制模板的限制程度,一个模板可以是开放的、闭合的或者是受限

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值