XNA学习笔记2-统一内容管道

上一节中用元素表示所有XNA能够加载并处理的内容,并谈论了所有这些元素所需要的两个最基本的Matrix。今天讨论一下所有这些元素的知识。
在XNA中,统一使用内容管道(content pipeline)框架提供支持。一个完整的内容管道是由导入器 (importer),处理器(processor),串行化器(serializer)和反串行化器(deserializer(组成的。[align=center][img]http://dl.iteye.com/upload/attachment/354688/cfb2346c-b17f-397b-a29c-0c5f413d4499.png[/img][/align]
[b]导入器[/b]:读取源文件并提取有用的数据,这个数据是存储在一个指定的标准格式中的。例如对一个模型,标准格式是NodeContent对象,对一个图像,标准格式是TextureContent 对象。这种标准格式叫做DOM对象。[align=center][img]http://dl.iteye.com/upload/attachment/354694/8651a84e-fb55-318a-ae9e-6c2bd98ed7ee.png[/img][/align]
[b]处理器[/b]:处理包含在DOM对象中的数据并生成在游戏中可用的对象。例如对模型来说,处理器可以添加法线数据,计算切线,设置effect等。[align=center][img]http://dl.iteye.com/upload/attachment/354696/257c1959-df6b-3cd8-9f6a-efce64ca9808.png[/img][/align]
串行化器或TypeWriter:定义了如何从处理器的输出生成.xnb二进制文件。
反串行化器或TypeReader(运行时):定义了如何从存储在.xnb文件的二进制数据流中构建游戏对象。因为这里不需要处理计算,相对于编译过程来说这个过程几乎不花费时间。

[b]自定义内容处理器[/b]。XNA支持自定义处理器,这样可以对导入器得到的DOM对象进行特殊的处理,比如修改其中的颜色。
方法是:在VS中新建一个Content Pipeline库项目(最后生成库文件),完成Process类的process方法。下面是一个自定义的纹理处理器。
        public override TextureContent Process(TextureContent input, ContentProcessorContext context) 
{
TextureContent texContent = base.Process(input, context);
texContent.ConvertBitmapType(typeof(PixelBitmapContent<Color>));

for (int face = 0; face < texContent.Faces.Count; face++)
{
MipmapChain mipChain = texContent.Faces[face];
for (int mipLevel = 0; mipLevel < mipChain.Count; mipLevel++)
{
PixelBitmapContent<Color> image = (PixelBitmapContent<Color>) input.Faces[face][mipLevel];
image.ReplaceColor(Color.Black, Color.White);
}
}
return texContent;
}

好了,下节将讨论2D的纹理的处理。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值