Learning XNA 4.0 第一章

第1章 XNA 4.0有哪些新特性?

    本章中,我将回顾XNA 4.0所发生的主要改变。如果您熟悉XNA 3.x或其它版本的话,这将是开始学习本书的很好的起点。如果您从未接触过XNA,可能应该跳到下一章。您不会错过任何信息,因为本章涵盖的内容在其它章节中都有介绍。  

 

改进的项目文件夹结构

    当您在XNA 4.0中创建游戏项目时,首先会注意到解决方案的结构改变了。在XNA早期的版本中,内容管道(content pipeline)从一个名为Content的子文件夹中获得游戏内容,Content位于您创建的游戏项目中,在解决方案资源管理器中可见(见图1-1)。  

o_1-1.jpg

图1-1 XNA 3.x 解决方案示例

    在XNA 4.0中,Content文件夹在您的解决方案中被移动到新的项目中。内容项目将被列入到名为GameProjectNameContent(请用您项目名替换GameProjectName)的目录下,并且后面带有用括号括起来的“Content”字样(见图1-2)。
  在内容项目上添加您所有的游戏内容(声音,纹理和模式等等),与XNA 3.x中添加它们到内容文件夹的方法相同。您还需要使用相同的代码通过内容管道访问内容,跟您在XNA 3.x中的操作相同。这一变化使得同一个项目的多个版本(也就是,如果您建立Windows和Xbox 360都可用的项目)的界面更加友好些同时也少了些混淆。
 

o_1-2.jpg

 图1-2 XNA 4.0 解决方案示例  

 

为Windows Phone 7系列开发游戏

  与XNA框架的早期版本相同,XNA 4.0被设计用于跨平台开发。开发人员使用XNA 4.0可以为Windows、Xbox 360以及现在的Windows Phone 7系列编写游戏。不仅仅是那样,除了一些资源管理与屏幕分辨率的问题,几乎100%地为这些平台中的其中之一所编写的代码同样也都可以在其它平台上使用。这样就最大限度的为游戏开发者提供了针对每个平台创建游戏的弹性。
  想了解更多关于Windows Phone 7系列游戏开发的信息,请参阅第17章。   

 

图形适配标准

  在当今支持DirectX 10或更高、强大的Xbox 360与Windows Phone 7系列引进的一线显卡之间,XNA框架支持在具有不同硬件性能的广泛的硬件上进行开发。在XNA早期的版本中,这些硬件差异必须在运行时(runtime)上处理,这经常会导致平台相关性代码。为了帮助促进在这些不同的设备上进行开发,XNA 4.0引入了图形适配标准(graphics profile )的概念。这些标准允许开发者通过支持配置标准所指排的特定图形API包来选定某些硬件设备。
  在XNA 4.0中有两种配置标准:Reach和HiDef。HiDef是设计用于高功率的、一线硬件,而Reach是设计用来支持更宽泛的硬件设备。Reach标准提供一个有限的图形特征集合并且它是HiDef的子集。当选择使用Reach标准编写游戏时,您牺牲了一些更强大的图形API,但同时也确保您的游戏可以在更宽泛的设备(尤其是Windows,Xbox 360和Windows Phone)上运行,假设这些设备都符合XNA 4.0的最小规格要求。
HiDef标准设计用来支持当前最强大的显卡。您可以使用HiDef标准来专注于Xbox 360硬件以及至少支持DirectX 10显卡的基于Windows的电脑。
  通过使用GraphicsAdapter.IsProfilesSupported方法在运行时上您可以辨别您的硬件支持哪个配置标准。下面的表1-1 中列出了Reach和HiDef标准之间更多的细节差异:  

1-1 XNA图形适配标准比较   

 

Reach

HiDef

支持平台

Windows Phone 7系列,Xbox 360,与带有至少支持shader model 2.0DirectX 9 GPUWindows PC 

Xbox 360,带有DirectX 10(或更高)GPUWindows PC

着色器模型

2.0(但Windows Phone不支持自定义着色器)

3.0+Xbox 360支持自定义着色器扩展如vfetch,但它在Windows上不可用) 

最大纹理尺寸 

2048

4,096

最大立方图尺寸 

512

4,096

最大体纹理尺寸 

不支持体纹理

256

无二次幂限制的纹理

支持但带有限制:不支持环绕选址模式,不支持mipmaps,对无二次幂限制的纹理不支持DXT压缩

无二次幂限制的立方图

无二次幂限制的体纹理

不支持体纹理

每次Draw调用的基元最大值

65,35

1,048,575

顶点流最大

16

16

最大顶点流幅度

25

255

索引缓冲格式

16(bit)

1632

顶点元素格式

Color,Byte4,Single,
Vector2,Vector3,
Vector4,Short2,Short4,
NormalizedShort2,
NormalizedShort4

所有的Reach顶点元素格式,加上HalfVector2,HalfVector4

纹理格式

Color,Bgr565,Bgra5551,
Bgra4444,NormalizedByte2,
NormalizedByte4,Dxt1,
Dxt3,Dxt5

所有的Reach纹理格式,加上Alpha8,Rg32,Rgba64,
Rgba1010102,Single,Vector2,
Vector4,HalfSingle,
HalfVector2,HalfVector4;

浮点纹理格式不支持过滤 

顶点纹理格式

不支持顶点纹理

Single,Vector2,Vector4,
HalfSingle,HalfVector2,
HalfVector4

渲染目标格式

调用QueryRenderTargetFormat()来找出支持什么

调用QueryRenderTargetFormat()来找出支持什么

多重渲染目标

上限为4;必须都有相同的位深度;支持阿尔法混合与每个渲染目标的独立写屏蔽 

闭塞查询

独立阿尔法混合

 

可配置效果

  在XNA的早期版本中BasicEffect类是一个非常基础的效果,它的执行主要是使游戏开发新手可以在对复杂的着色器代码没有深入了解的情况下构建游戏。当时的观念是认真的游戏开发者会实现它们自己的着色器而不会依赖BasicEffect类。
  随着Windows Phone 7的上市很多设想都不得不改变,因为它不支持自定义着色器。因此,因此,新的可配置效果被添加到Reach和HiDef两者标准中。它们是:
  基本效果:
  对BasicEffect类进行调整从而包含更多的像素和顶点着色器用来支持更真实的灯光与烟雾效果。
  双重纹理效果:
  这个效果使您可以使用带有独立纹理坐标的两个不同的纹理。这两个纹理被混合到一起用来增添复杂性和更多的细节。
  阿尔法测试效果:
  这个效果使用一个参考阿尔法(reference alpha)和一个阿尔法功能实现阿尔法测试。它可以通过仅更新在场景中描绘的像素来提高性能。
  皮肤效果:
  这个效果使用骨骼和重量来确定顶点位置。当用在动画和实例中时该效果有很强大的作用。
  环境映射效果:
  这个效果使用到了根据环境的纹理和立方映射纹理来渲染对象,反射来自场景对象的光线。
 

内嵌状态对象

  在XNA的早期版本中,一些状态属性,被用来改变场景在屏幕上绘制的方式以及图形设备处理您的游戏发送给它数据的方式,这些都已经被移动到状态对象类中。这些类是:
  BlendState
  控制颜色和阿尔法值如何被混合的。  

  DepthStencilState
  控制深度缓冲(depth buffer)与模板缓冲(stencil buffer)是如何被使用的。  

  RasterizerState
  确定如何把矢量数据(形状)转化为栅格数据(像素)。
  SamplerState
  确定如何取样纹理数据。 

 

标量与方向

  XNA 4.0中的标量(scalars)使开发者在编写游戏时无需担心原始分辨率或屏幕方向的问题。当您玩游戏时,标量将自动地根据设备将分辨率调节为您想要的分辨率。这个增强功能极大的提高了游戏性能。
  屏幕方向是Windows Phone 7设备上最重要的元素,当旋转设备,横竖屏循环切换并返回。标量自动地从一个方向到另一个方向去映射您的游戏并且旋转输入装置,例如相应的输入触摸面板。


改进的输入API 

  Microsoft.Xna.Framework.Input.Touch命名空间含有几个类,这些类能访问到对WindowsWindows Phone设备的多点触摸输入。此命名空间增加TouchPanel类和TouchLocation类,它们能够访问到来自输入设备(如Windows Phone 7系列设备中的触摸面板)的触控点。  

附加音频API  

  在Microsoft.Xna.Framework.Audio命名空间中增加了两个新类来提高音频支持力度:
  Microphone
  这个类提供使用麦克风来捕获音频的方法、域和事件。
  DynamicSoundEffectInstance
  这个类提供音频缓冲回放的方法和事件,让开发者可以回放合成或缓冲的音频。 

  

音图枚举与视频回放

 

  添加新的音频支持使开发者可以使用统一资源标识符(URI)来播放歌曲,以及选择,编辑和发布照片。 

 

修改与增加的类与方法

  相当一部分的类与方法被添加或修改了。

  您可以在Microsoft的MSDN网站http://msdn.microsoft.com/en-us/library/bb417503.aspx上查看全部的清单。

 

知识测试:问答

  1. XNA 4.0中对XNA文件夹结构进行了什么重大改变?
  2. XNA 4.0支持什么游戏平台?
  3. XNA 4.0ReachHiDef标准有什么不同?
  

 

转载于:https://www.cnblogs.com/peixiaoxing/archive/2011/01/12/1933411.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值