使用Starling框架在Flash Builder里搭建第一个GPU加速的2D项目

本文内容:
Starling是Adobe发布的ActionScript 3.0框架,它构建于Flash Player 11的Stage3D API之上,将面向显卡的编程接口封装为一套可以被ActionScript开发者迅速掌握的API,让不熟悉3D环境的开发者们可以利用GPU来渲染2D项目。本文将对如何在Flash Builder 4.5里配置和搭建一个Starling项目做详细的介绍。

准备工作:

测试Starling之前,你需要先确保你的电脑显卡支持编程,如PC下的DirectX,Mac下的OpenGL。
然后下载下面的必备工具和文件:
Flash Builder 4.5
Flex SDK 4.5.1
playerglobal.swc
Flash Player 11 rc (debug)
Starling Framework
性能测试工具Stats类库

接下来在Flash Builder 4.5里,按照以下的步骤进行配置:
1,在Flash Builder里新建一个ActionScript项目。
2,右键点击项目,选择Property。
3,在项目Property中选择ActionScript Build Path
4,在Source path里添加Starling框架中的starling/src文件夹。
5,将Starling框架文件夹中的starling/media文件夹拷贝到项目文件夹下。
6,在Source path里添加项目测试工具Stats中的src文件夹。
7,将Stats的assets文件夹拷贝到项目文件夹下。
8,将下载的Flex SDK文件夹拷贝到Flash Builder的安装目录下的sdks中。
9,进入Flex SDK的文件夹,在frameworks/libs/player下面建立一个新的文件夹,命名为11.0,并将下载的playerglobal.swc(注意命名)拷贝到该文件夹下。该playerglobal.swc包含了所有Stage3D的API。
10,在项目Property中选择ActionScript Compiler。
11,在ActionScript Compiler面板的Flex SDK version中点击Configure Flex SDKs,添加刚才拷贝的Flex SDK。回到Compiler面板,选择该SDK。
12,在Adobe Flash Player options下设置Use a specific version 11.0.0,这样Flash Builder会到SDK的11.0文件夹下寻找最新的playerglobal.swc。
*注意:有些情况下在使用了新的playerglobal.swc之后,原有的Native API丢失。针对这样的问题,需要在ActionScript Builder Path下手动添加10.2下的playerglobal.swc,同时使用两个playerglobal.swc。
13,在Compiler options下的Additional arguments中添加-swf-version 13,确保Flash Builder发布正确的SWF测试版本。
14,退出项目Property面板,在项目文件夹列表中打开html-template,右键用Open with->Text Editor打开html.template.html文件。在第48行插入一行代码:params.wmode = “direct”,确保SWF打开显卡的调用功能。

这样,Starling项目的配置工作就已经完成了。

编写第一个Starling项目
Starling基于Stage3D的底层API,将Context3D,着色器,顶点、片段这些底层代码封装起来,按照ActionScript 3.0原生类的样子包装成一套每个Flash开发者都熟悉的API。比如starling.display.Sprite,starling.display.MovieClip,starling.display.Button。我们不需要了解它们是如何从Stage3D底层API里转换而来,只要按照我们原有的开发习惯,就可以很容易的把显卡资源用在新的项目上。

通过上面的配置,我们已经建立了一个ActionScript项目。首先我们需要建立一个Starling的主类,我们可以这样理解,在Starling的世界中,有一个最基本的显示舞台,所有Stage3D的东西都是被加载到这个舞台上。这个主类需要继承starling.display.Sprite:

1
2
import starling.display.Sprite;
public class Game extends Sprite

然后在项目主应用程序中,新建一个starling.core.Starling的实例,通过下面的代码将Starling的主类Game实例化:

1
2
3
4
5
6
7
8
9
10
import starling.core.Starling;
...
private var myStarling:Starling;
...
public function StartUp(){
        myStarling = new Starling(Game, stage);
        //这行代码用来调节渲染的品质,值越高品质越好,但性能越低
	myStarling.antiAliasing= 1;
	myStarling.start();
}

在Starling主类Game中,可以按照原有的开发习惯来建立显示对象,比如我打算做一个抛字母的效果,可以完全按照原来的开发思路来做。

点击查看效果

这里不对效果的开发过程做解释,非常的简单,而且不是本文的重点。我主要列举两个创建显示对象实例的代码:
创建一个图片:

1
2
3
4
5
6
7
8
import starling.display.Image;
import starling.textures.Texture;
....
[Embed(source="xxxx.png")]
private var ringClass:Class;
....
//使用Texture给图片添加材质,此例的材质是一个嵌入的PNG图片。
var image:Image = new Image(Texture.fromBitmap(new ringClass()));

创建一个文本:

1
2
3
4
5
import starling.text.TextFIeld;
import starling.textures.Texture;
....
//创建一个TextField文本,参数分别为宽,高,内容,字体,字号,颜色等等
var textfield:TextField = new TextField(80,80,"Hello world!","Impact",50,0x0);

如列出的代码例子可见,Starling的结构和使用方法和以往的ActionScript开发没有什么区别。由于该框架是开源框架,所以对框架的实现本质感兴趣的朋友可以自行深入探讨Stage3D的底层API。

本文例子下载:
FirstExample.zip

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包括 PDF文档 文档中对STARLING以及相关框架的介绍以及代码实例 内容包括AS3 项目源文件两个 包含PDF中提到的例子 以及运行效果SWF10个 在Stage3D出现之前,Flash3D引擎( Papervision3D, Away3D,…)都是软解 CPU是通用处理器,没有为渲染三角形而优化过 Stage3D是一个新的Flash API。它专门用于实时3D渲染。用Stage3D,你可以让Flash充分利用用户计算机的GPU硬件加速能力。 GPU渲染过程比软件渲染模式快多了。GPU被设计用来干专门的工作:计算顶点和渲染三角形,如此而已。因为GPU硬件被用来处理专门的工作,所以硬件加速3D渲染就非常高效! Stage3D的API相对仍较为繁琐 • 比如绘制一个图形,在传统Stage中使用绘图API可能只需要几行代码,而Stage3D实现同样的图形显示却需要几十行或上百行代码 Starling的英文原意是叫做“八哥”的小鸟。 不过在Flash领域,Starling是一个ActionScript类库,它模仿了传统的 Flash显示列表。然而,和传统的显示对象不同,Starling对象完全存在于Stage3D环境。这意味着,所有的显示对象都直接由GPU渲染,这 会带来非常明显的性能提升。 Starling并不是直接1:1的复制Flash API。所有的类都针对GPU模式进行了精简和优化。Starling向开发者隐藏了Stage3D的内部细节,但如果您想创建自定义显示对象,也可以很容易访问到它们。 StarlingMVC是一个为使用Starling来开发游戏的MVC框架。这个框架的特性方面,很像Swiz和RobotLegs。特性列表如下: • 依赖注入(DI)/控制反转(IOC) • 视图代理(View Mediation) • 事件捕获(Event Handling) • 非侵入性框架 • 配置简单 • 容易扩展 • 包含了很多对您的游戏有帮助的工具 StarlingMVC 框架是基于 Apache License 2.0协议开源的. 以上为部分PDF内容

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值