XNA游戏绘图
来源:互联网 发布:java独立开发 编辑:程序博客网 时间:2024/04/27 11:30
XNA中所有的图形都要通过内容管道来加载,它能够将jpg、bmp、png等文件转换成一种XNA很容易使用的内部格式,使得不同文件类型对于XNA都是透明的,而我们不需要为图像格式而担心。
添加图像需要在VS的解决方案资源管理器中的Content上右键点击,依次选择添加和现有项(为了便于管理可以先新建文件夹),然后在硬盘上选取你想要加载的图像。
然后要将图像存储在数据类型是Texture2D的一个变量内,这一步通常在LoadContent方法中实现:
Texture2D texture = Content.Load<Texture2D>( @”文件路径” );
其中,Content属性是ContentManager类型,可以用来访问所有加载到内容管道中的数据。而Load方法则可以将内容加载到不同类型的XNA对象当中,<>中的就是指定参数类型为Texture2D。至于文件路径,指的是以解决方案资源管理器中的Content节点开始的路径,字符串前加上@表示逐字解释字符串,就是要忽略字符串中的转义序列,比如说:
@”images\logo” 等同于 ”images\\logo”
至此,图像加载部分已经全部完成,接下来是绘制部分,典型的是在Draw中的三个步骤:Begin()、Draw()、End()。
这三个方法都是SpriteBatch类的一个方法,需要一个SpriteBatch类型的变量spriteBatch。此变量已经在创建项目时被声明,然后在LoadContent方法中被初始化。之所以需要这三步,是因为游戏过程中图形设备会接收到大量的数据,而数据会有不同的格式和类型;所以在向图形设备输送数据前,都需要让图形设备知道数据类型,以便能够正确地进行处理。简言之,在Draw具体负责怎样绘制图像之前,需要Begin来准备,需要End来结束。
Begin拥有两个参数,分别是:
SpriteSortMode:定义渲染精灵的排序模,,有五个模式:
l Deferred:精灵不会被绘制直到SpriteBatch.End被调用。然后End以它们被调用的次序送到图形设备中。在这个模式下,操作多个SpriteBatch对象时可以让Draw调用不会产生冲突,这也是默认的模式。
l Immediate:Begin:调用会立即设置图形设备,Draw调用会立即进行绘制,同一时间只能有一个SpriteBatch对象被使用,这是最快的模式。
l Texture:和Deferred模式一样,但是精灵在绘制之前按照纹理进行排序。
l BackToFront:和Deferred模式一样,不过精灵按照层深度参数从前往后排序。
l FrontToBack:和Deferred模式一样,不过精灵按照层深度从后往前排序。
BlendState:决定精灵颜色怎样和背景色混合,有三个模式:
l None:不进行颜色混合。
l AlphaBlend:使用alpha值进行混合。这是默认模式,并开启透明效果。
l Additive:将精灵颜色和背景颜色进行混合.
而Draw方法拥有多个重载函数,完整的Draw参数列表如下:
Textrue:Texture2D类型,表示要绘制的纹理
Position:Vector2类型,表示绘制图像的左上角坐标
SourceRectangle:Rectangle类型,表示要绘制的原始图像的一部分
Color:Color类型,表示染色颜色
Rotation:float类型,表示旋转图像的弧度
Origin:Vector2类型,表示旋转的参照点
Scale:flaot类型,表示缩放比例
Effects:SpriteEffects类型,表示垂直或水平翻转图像
LayerDepth:float类型,表示图像的层叠次序
典型应用如下:
spriteBatch.Draw( texture, Vector.Zero, null, Color.White, 0, Vector.Zero,1.5f, SpriteEffects.None, 0 );
另外,在Game1类构造方法的末尾添加:
TargetElapsedTime= new TimeSpan(0, 0, 0, 0, 50);
可以改变游戏原定的60fps帧率,变成每50微秒调用一次Update,相当于20fps。
- XNA游戏绘图
- XNA游戏:Hello XNA
- xna游戏编程
- 《XNA游戏开发》简介
- XNA保存游戏数据
- XNA 3.0游戏开发
- XNA学习(一) XNA游戏框架
- XNA游戏——泡泡堂
- XNA游戏界面全屏切换
- XNA游戏编程 学习备忘
- 03 XNA 交互式游戏设计
- 编写第一个XNA游戏
- XNA游戏开发之2D游戏
- XNA Arcade Alpha1—XNA游戏发布软件
- Xna游戏编辑器开发(WinForm内嵌Xna)
- 下载:微软游戏开发工具XNA 2.0
- C#+XNA开发的勇者传说游戏
- XNA 2D游戏物体碰撞
- leetcode 100: Simplify Path
- Fatal error: Class 'ZipArchive' not found的解决办法
- android屏幕自适应
- SSH框架与SSI框架的区别
- javascript的变量
- XNA游戏绘图
- 打开网页输入用户名和密码时,字体非常小,只显示————————
- Nginx http_core模块 配置文件解析
- maximo开发经验
- c++ 初学路上障碍真多
- J2EE工程文件编码
- PHP的mail函数实现邮件发送
- java little case .you know easy to forget
- 模拟登陆。获取了Cookie凭证,c#版本