SpriteBatch详解——SpriteBatch.Begin 和 SpriteBatch.End
来源:互联网 发布:7层网络协议 编辑:程序博客网 时间:2024/05/18 11:27
公共方法
Name
Description
Begin
已重载,准备图形设备来绘制sprites
Dispose
已重载,直接释放这个对象的非托管资源
Draw
已重载,添加一个sprite到要绘制的一堆sprite里(在屏幕上绘制一个sprite)
DrawString
已重载, 添加一个string到要绘制的一堆sprite里(在屏幕上绘制一个string)
End
清理sprites batch 并且将图形设备恢复到对应的Begin函数之前的状态
还有其他的一些继承自Object类的方法就不说明了.
Begin函数与End函数承对使用
有四个重载分别是:
SpriteBatch.Begin ()
SpriteBatch.Begin (SpriteBlendMode)
SpriteBatch.Begin (SpriteBlendMode, SpriteSortMode, SaveStateMode)
SpriteBatch.Begin (SpriteBlendMode, SpriteSortMode, SaveStateMode, Matrix)
这里只介绍最后一个,前面三个缺少的参数全部是默认值会说明
第一个参数SpriteBlendMode(混合模式)是一个枚举型可枚举的三个值分别是Additive AlphaBlend None
主要用来计算颜色的混合,这是2D游戏华丽贴图的关键之一。游戏中最常用的颜色表示法RGBA(即红绿蓝透明度表示),每个颜色占1byte,取值范围0-255,透明度0代表完全透明255代表不透明(默认值为255),黑色是0,0,0。
Xna中一个像素的颜色的计算公式是[新颜色=来源混合参数*来源颜色+目标混合参数*目标颜色] 」(NewColor = SourceBlend*SourceColor + DestBlend*DestColor)。来源指指的是我们准备画的像素,目标值指的是已经在buffer中将要绘制的颜色。
计算时使用标准化的RGBA值,即RGBA分别除以255取0到1之间的float。
AlphaBlend(透明度混合)是将来源的Alpha作为来源混合参数,将1-Alpha作为目标混合参数。
如果将要画的一个新的图形的Aplha值设置乘255不透明(标准化为1)此時新顏色=1*SourceColor + 0*DestColor,那么它将覆盖之前的像素颜色。
Additive(添加混合)是将来源的混合参数和目标的混合参数都设置成1,这样混合白色会没有变化,其他的颜色看上去会更加明亮,黑色会更加明亮如图1,DNF的魔法阵周遍是完全的黑色所以想过是直接显示了底层的ELLY图片。这要求美工作出的图片必须符合要求。
None(不混合)就是来源混合数为1,目标混合数为0。即后来的图像覆盖原有的图像。
第二个参数SpriteSortMode(绘制顺序)也是一个枚举类型,有五个值分别是BackToFront Deferred FrontToBack Immediate Texture
BackToFront(从后向前)越晚调用Draw方法的越早绘制,如果有设置深度的话0是前面 1时后面,数字大得先画,深度优先权大于被调用的顺序。
FrontToBack(从前向后)与BackToFront正好相反,越早调用Draw的越早绘制。
Deferred(延缓)不考虑深度,越早调用Draw的越早绘制。(默认值)
Texture(材质)与Deferred一样,但是对于相同深度不互相重叠的情况效率更高。
以上四种都是在调用End方法之后绘制。
Immediate(立即)调用完draw后马上绘制。
第三个参数SaveStateMode(保存状态模式)
当调用Begin的时候会设置许多的参数,而利用SaveStateMode可以将其初始化(None)然后必须重新对这些参数设置,也可以设置成SaveState不进行设置,但是会影响到效果。特别是CullMode这样的参数如果不进行适当的更改而保持不变的话,在3D中效果是很明显不一样的。
第四个参数Matrix(转换矩阵)可以是Begin到End之间的所有的Sprite和String进行适当的变换。如位移旋转缩放或者3D中深度的改变等。
End函数与Begin成对使用表明Begin结束。
- SpriteBatch详解——SpriteBatch.Begin 和 SpriteBatch.End
- SpriteBatch详解——SpriteBatch.Begin 和 SpriteBatch.End
- XNA学习笔记——SpriteBatch.Begin的Matrix参数
- XNA学习笔记——SpriteBatch.Draw的layerDepth
- XNA学习笔记——SpriteBatch.Draw的origin参数
- LibGdx----Texture, TextureRegion, SpriteBatch
- libgdx - SpriteBatch的使用
- LibGdx----Texture, TextureRegion, SpriteBatch
- 海量精灵 SpriteBatch
- SpriteBatch 使用注意点
- XNA中SpriteBatch.Begin()重载中的BlendState解析
- libGDX中Textures TextureRegion SpriteBatch
- Libgdx 之SpriteBatch深入分析
- AndEngine_example1.4 画SpriteBatch(和libgdx的类似)
- XNA4.0中effect的使用变化以及spriteBatch begin的变化
- XNA-SpriteBatch.Draw()的重载方法
- libgdx - 对于SpriteBatch中setProjectionMatrix() 的理解
- LibGDX_3.2: 纹理画布(SpriteBatch)
- 最新的感觉:放松带来的压力要比工作的时候大 2010/07/20
- RE. flash+php截图后保存图片
- Oracle 10g 安装问题:Microsoft LoopBack Adapter 配置
- 身体是革命的本钱
- 终于上班了,做MTK 用c开发.
- SpriteBatch详解——SpriteBatch.Begin 和 SpriteBatch.End
- oracle 10g默认的用户名与密码
- linux下的常用命令
- C语言常见编程题【索引】
- TD游戏分析(5)
- java 学习历程
- 关于微笑
- 设计模式123
- 懂得心理学上的暗示,学会说话,少奋斗三十年