【原】XNA中Model和BasicEffect配合的问题

为了练习shader,想做一个模型查看器,模型我就直接使用了XNA提供的spacewar里面的飞船。结果出了问题,用我写的shader渲染飞船时座舱罩和几个透明位置的贴图不正确,用BasicEffect就是正确的。但是如果我手动加载BasicEffect使用的FX文件,再用它渲染飞船就又不对了。也就是,只要不用XNA的BasicEffect类模型某些位置的贴图就出错。

开始我以为是在BasicEffect类里面有专门的代码,对不同的Model动了手脚,后来google到了Shawn Hargreaves的博客,发现原来是这么回事:

模型文件(Fbx或X)的顶点格式有很多种,有些带颜色、有些带纹理,BasicEffect的shader支持12种方式渲染模型,为不同的模型顶点选择不同的shader方式并不是BasicEffect做得,而是在ContentPipeline的时候就设置好了。也就是,当把模型文件编译成xnb格式的时候,ContentPipeline根据模型文件里的说明,设置了模型的MeshPart里面的BasicEffect的参数。

对ContentPipeline一直不怎么了解,有空要看一下!

Shawn Hargreaves的原文在http://blogs.msdn.com/shawnhar/archive/2008/08/22/basiceffect-a-misnomer.aspx

转载于:https://www.cnblogs.com/cocoaleaves/archive/2009/05/05/1449960.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值