摘要: 问题 你想在3D世界中创建一个漂亮的3D爆炸效果。 解决方案 你可以通过混合大量的小火焰图像(叫做粒子)创建一个爆炸效果,,如图3-22所示。注意一个单独的粒子很暗,但是,如果你添加大量的粒子,就会获得一个漂亮的爆炸效果。 图3-22 单个爆炸粒子 在爆炸的开始阶段,所有粒子都位于爆炸的初始位置,因为所有图像的颜色都叠加在了一起,所以会形成一个明亮的火球,绘制粒子时你需要使用additive b... 阅读全文
posted @ 2010-12-04 14:22 AlexCheng 阅读(689) 评论(0) 推荐(0)
摘要: 问题 要使画面给人留下深刻印象,一个3D世界需要包含许多物体,特别是处理室外场景时。例如,如果没有绘制成百上千棵树,树林看起来就会显得不真实。但是,以3D模型的形式绘制几百颗树是不可能的,因为这样做会极大地拖慢应用程序。 你也可以使用少量的billboarding(译者注:billboard可以翻译为公告板,广告牌),例如,绘制激光束或子弹。这通常和一个粒子引擎组合在一起(见教程3-12)。 ... 阅读全文
posted @ 2010-12-04 14:17 AlexCheng 阅读(724) 评论(0) 推荐(0)
摘要: 扩展图像内容处理器:灰度变换和处理器参数 问题 你想扩展图像处理器用来处理每个独立像素的颜色。你还想从XNA主项目中改变处理器的参数。 解决方案 在前面的教程中,你知道了如何扩展内容处理器,让你可以处理并改变独立像素的值。 在Processor类中声明的所有公共变量都可以在素材的属性面板中设置。 工作原理 开始的初始化步骤已经在教程3-9中解释过了。复制下列代码让你可以处理图像文件中... 阅读全文
posted @ 2010-12-04 14:11 AlexCheng 阅读(327) 评论(0) 推荐(0)
摘要: 扩展图像内容处理器 问题 你想扩展默认的图像内容导入器控制像素,或者你想学习内容管道(content pipeline)。 解决方案 因为XNA已经提供了一个内容导入器将一个图像文件作为源并最终将它创建为一个Texture2D对象,你要做的只是扩展这个内容导入器。本教程中,你可以调用PixelBitmapContent辅助类的ReplaceColor方法,它是由内容管道框架提供的。 注意:如果你只... 阅读全文
posted @ 2010-12-04 13:35 AlexCheng 阅读(496) 评论(0) 推荐(0)
摘要: 将场景绘制到纹理 问题 你想将屏幕上的内容保存在一个纹理文件中,这样可以实现屏幕截图,或者将场景绘制到一个纹理,而这个纹理用于深度贴图/折射贴图或作为post-processing effect的输入。 解决方案 最简单的方法是使用device. ResolveBackBuffer方法,这个方法将当前后备缓冲中的内容写入到一个纹理中。如果你只想将场景绘制到一个纹理,或指定大小的纹理,你需要使用de... 阅读全文
posted @ 2010-12-04 13:26 AlexCheng 阅读(600) 评论(0) 推荐(0)