首页 >> 文章 >> 导入资源

导入资源

Posted by: admin 04月14日 导入资源

Advertisement

2009年5月1日:

只要选择一个纹理文件(.dds、.jpg、.bmp或.png)然后把它放到XNA Studio项目中。现在你可以点击纹理,并且配置其 Content Processor 属性

给texture设置正确的Content Processor模式很重要。对于2D数据,像sprite、文本以及游戏使用的所有UI图像,通常最好使用32bpp Sprite格式(未压缩的,这意味着1024×1024分辨率及32bpp的纹理,需要4MB空间)。
在一个3D游戏中,3D纹理数据的使用要比2D UI 纹理多得多,而且每一款游戏的纹理和级别会逐渐增大。因为这个原因,保持纹理的小尺寸非常重要。要使用硬件纹理压缩(hardware texture compression),而不要降低纹理的分辨率以及使游戏看上去非常糟糕。您可以为色彩纹理选择1:6压缩率的DXT1格式,以及为包含Alpha信息(或compressed normal maps)的纹理选择1:4压缩率的DXT5格式。这意味着在游戏消耗相同显存容量的情况下,DXT1压缩的纹理数量是未压缩纹理的6倍,而且还不会有太多的质量损失。另一个技巧是在shader里合并纹理或者甚至生成纹理;例如,细节纹理可以改进地形的细节而几乎不消耗额外的显存。

对于模型文件,当前你只能使用X Model Importer或者FBX Model Importer(如图3-5)。将来可能会有更多的格式可供使用。如果你编写自定义的模型处理器,就像你将要在第七章做的那样,你能以你选择纹理处理器同样的方式选择模型处理器。对于normal mapping 你要选择来自于第七章的自定义XNARacer Tangent Model Processor。在下面几章中只要许可默认值。

如果您按照前两章的方式来加载纹理,那么您或许已经知道了如何在XNA中加载内容。纹理加载如下:
backgroundTexture = content.Load<Texture2D>("CityGroundSmall");
3D模型也以相同的方式加载----只要改变Load方法的泛型参数类型:
appleModel = content.Load<Model>("apple");
显示模型稍微有点复杂;没有简单的绘制方法,你必须遍历所有的模型mesh并更新所有shader特效,然后再渲染每一部分。更多细节参看第五章和第六章。本书在第七章后面,您将看到一个新类专门加载和渲染模型,它使3D模型显示在3D世界中甚至简单到只需使用一行代码就实现:
appleModel.Render(Vector3.Zero);
现在您已经了解所有的关于内容管道的基础知识。在即将到来的几章中,当您在图形引擎中使用自定义的Tangent Model Processor添加3D模型的时候,你将学习有关内容管道的更多内容,并且在第九章中你会深入学习XACT。