Starling优化技巧一

Starling 一种专为游戏开发设计的AS3.0 2D 框架,但是在实际应用过程中可以将它应用于很多其它的应用程序。大多数 Flash 开发人员希望利用这种能力提高 GPU 的加速功能(通过使用 Stage3D 技术),而不必编写如此高级的框架和深入研究低级的Stage3D APIs。优化Starling性能可以让游戏更加快速的运行,对Flash游戏制作人员来说来说是重要的操作。下面给大家介绍部分Starling性能优化的技巧,希望能够帮到大家:

着色处理

    由于一些移动设备硬件(比如第一代的iPad)处理纹理的“着色”时非常困难的原因,Starling优化了未着色的图片的渲染代码。这样处理同样带来了一个问题:在未着色的对象和着色的对象之间切换时,将会导致一次状态变更。如果您创建了一个硬件加速的游戏,并且没有考虑到着色这个问题,那么这些状态变更可能给您的性能带来不必要的麻烦。

当你注意到这个问题过后解决问题就很简单了:只需要设置您的根对象(root object)的透明度为“0.999”或一个近似的值。由于这个透明度会向下影响到子元件的渲染,Starling会将任何对象都按照“着色”对象来对待,这样就不会触发过多的状态的变更了。减少了着色状态的变更Starling的性能也会有一定的提升。

画家算法

    着色处理可以在一定程度上减少状态的变更,画家算法同样能够实现这一变化。要了解如何尽量减少状态变更,您需要了解Starling处理您的对象的顺序。和传统Flash类似,Starling也采用了一种“画家算法”来处理显示列表。这个算法的意思就是,就像一个画家所做的那样,来绘制您的场景:首先绘制最底部的对象(比如一个图片背景),然后再绘制上一层的对象(以此类推)。如果您想在Starling中创建这样的场景,您可以创建3Sprite容器:一个用来包含远处的山脉,一个包含地面,一个包含植被。山脉的排序肯定在最底部(索引是0),植被的排序是在最顶部(排序是2)。每一个Sprite会包含有实际内容的图片。渲染的时候,Starling会先渲染最左侧的”Mountain 1″,并向右继续渲染,直到到达 “Tree 2”。现在,如果所有的对象都有不同的状态,那么就会造成6次绘制调用。如果您从每一个单独的图像来加载每一个对象的纹理,就会发生这样的情况。

纹理图集

    上面已经介绍了纹理图集为何如此重要的原因。如果从一个单一的图集加载所有这些纹理,Starling就可以在一次调用中完成所有的绘制!在这里,每个图像都使用相同的图集(用所有节点具有相同的颜色来表示)。这样的后果就是您应该总是让您的所有纹理使用同一个纹理图集。然后,有时候,并非所有的纹理都能融合到一个单一的图集上。一个纹理图集的限制是2048*2048像素(这是一些移动设备硬件的限制),所以您早晚都会碰到这种所需纹理为空的情况。但是这也没什么问题—只要您用一种聪明的方式来安排您的纹理。这两个例子都是使用了两个纹理图集(同样,每一个纹理图集用一个颜色表示)。但是左侧的显示列表,将强迫每个对象发生状态改变,而右侧的版本则可以只需要两次批处理就能绘制所有的对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值