为什么Adobe要推出Starling框架?

85 篇文章 0 订阅
57 篇文章 0 订阅
相信很多开发者都在问这个问题:为什么Adobe要推出Starling框架来做2D加速,而不是直接对DisplayList进行GPU渲染呢?
* {9 ?& D8 y8 j: ~  m: I/ [" o' r# x% q
这篇文章(EN)给予了详细的解答,参见:
http://blog.kaourantin.net/?p=138

文章摘要:) M4 e% b; k4 W. R' s6 l
很多朋友在问上面的问题(为什么不直接对DisplayList进行GPU支持),而实际上,Adobe已经在这条路上探索了好几年了。
1.在2008年推出的Flash Player 10,增加了一个"wmode=gpu"选项,这个选项的作用就是,将CPU预处理的显示对象,作为纹理发送给GPU来处理和合成。但实际上发现开启这个选项的网站非常少,大多数人对于“更快的内容展现”没有兴趣,更糟糕的是在某些情况下人们会发现CPU渲染比GPU渲染更快(后文会解释),基于这个原因,而且增加GPU支持的研发成本很高,所以Adobe在Flash Player 10.3的时候就将选项回滚到了wmode=direct
2.在移动设备上,包括Android和iOS,我们提供了‘renderMode=gpu’.不同于桌面的wmode设置,这个将直接通过OpenGLES2调用GPU来渲染矢量图形。这个特性至今而在使用并取得了成功。

那么对于传统的显示列表进行GPU渲染的问题是什么?因为传统的DisplayList的设计思想是基于软件渲染的,它并不是很容易就能通过GPU渲染得到更快的速度。& C+ Q; ?% U8 a

1.传统的显示列表渲染提供了一些特性,比如遮罩,九宫格,这些您在Starling中不得不寻找其它的途径才能得到相似的结果。! O6 s, x0 a5 d$ N0 `8 z
2.很多传统的显示列表的特性难以很快的转移到GPU模式,包括:图层色彩混合模式,滤镜,变换,和系统文本等等。这些无法实现的部分我们还是需要回滚到软件渲染模式。
3.GPU难以处理深层次的嵌套。在Flash中一个电影剪辑套另一个电影剪辑是常见的,但这对GPU渲染是一大禁忌。您或许认为应该很容易实现对它的优化,但实际情况并非如此。
4.GPU喜欢位图。如果是矢量图形,将意味着每帧都要提交纹理,这将产生大量的vertex data,将在移动设备的GPU和Intel的桌面GPU产生问题。
5. 鼠标事件是基于经典的DisplayList的事件冒泡机制。) _; b, I2 y- ?/ ~4 @
6.传统的DisplayList是一个巨大的状态机,基于“帧”进行刷新。

希望这些解释,可以解答一部分网友的疑问。7 Z. ?) r$ {, n
我希望在未来,大多数的游戏和多媒体内容,将迁移至Stage3D,但仍然基于传统的显示列表,去处理诸如高保真的矢量图形,文本渲染,像素处理等内容。传统的显示列表肯定不会消失,我们将继续增加新的功能和优化性能。
  • 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、付费专栏及课程。

余额充值