转:http://www.todoair.com/2d%E5%8A%A8%E7%94%BB%E5%AE%9E%E7%8E%B0%E6%95%88%E7%8E%87%E8%AF%84%E6%B5%8B-2012-06-20/
作者: 郭少瑞
目前基于Flash平台,如果我们要在屏幕上实现动画,可以有哪些技术方案?当然,动画师们最先想到的是Flash传统的电影剪辑
(MovieClip),这个曾经让动画制作变的如此简单的方式,如今却面临性能的严峻考验。为了实现高性能的动画,开发者们可谓各显神通,不过总结起
来,实现方式基本围绕着位图操作,或基于Stage3D API进行。
那么这些方式的效率对比如何?让我们通过一个测试来看看实际效果吧。测试是通过由ESDOT提供的一个测试项目进行的(点击这里
),原项目中已经包含了位图动画和Starling的部分,笔者做了进一步性能优化,并添加了ND2D和Genome2D的部分。
注:本数据仅供开发者参考,评测的目的也并非为了评价框架的优劣
(用例有限,不足以覆盖所有情况)。从测试可以看出Stage3D的2D框架在处理这些动画时占据整体优势,而文中涉及的3个框架应该也是各有千秋,您可
以根据自己项目的特性,人员安排,框架特性等多方面因素考虑,选择一个合适的框架。
测试项目下载:MobileRenderTests
测试的动画如上图所示:每一个小熊都在不断重复爬行动作,而每一个小熊同时也在向左或向右进行移动。
项目中引用的3个2D框架(Starling, ND2D, Genome2D)均采用GitHub上的最新版本(截止2012-6-20),测试分两个平台进行:Lenovo T410 (Windows 7) 和 iPad 1 (iOS 5)
编译采用Flex SDK 4.6+AIR SDK 3.3
2D框架版本:Starling为GitHub最新代码,介于1.1和1.2之间吧(下一个版本1.2)。ND2D也是GitHub最新代码,应该是接近1.0的版本了。Genome2D采用了Genome2D-v0.9.1.swc
。
衡量标准:满帧为30 FPS,(移动设备测试为正常打包模式,确保性能最佳)。
渲染方式说明:
-
MovieClip
用传统的Flash的电影剪辑来测试。
-
CacheSpriteSheetTest
这种方式是,在屏幕上添加N个Bitmap对象,然后不断替换这些对象的bitmapData属性,来实现动画 (运行
)。
-
CopyPixels
这种方式大家也比较熟悉,就是用类似Canvas绘图的机制,不断的在一个大Bitmap上用copyPixels方法绘制来完成动画过程 (运行
)。
-
StarlingMovieClip
用Starling框架的MovieClip类进行测试 (运行
)。
-
StarlingQuadBatch
用Starling框架的QuadBatch类进行测试(批处理模式) (运行
) 。
-
ND2DSprite2D
用ND2D的Sprite2D进行测试(运行
)。
-
ND2DSprite2DBatch
用ND2D的Sprite2DBatch进行测试(批处理模式)(运行
)。
-
Genome2D
用Genome2D的动画机制进行测试 (运行
)。
测试开始。
测试1:Lenovo T410 (Windows 7)
这是一台Lenove笔记本,性能中等,可开启硬件加速。测试结果:
注:这里使用Flash Builder创建的AIR项目,位图部分设置了wmode=gpu,这会对结果产生影响。用HTML包裹测试的数据,和本表会有些出入。因为每个机器的情况不同,您可以从上面的网页链接,打开HTML包裹的测试用例进行测试。
从这个结果可以看出,在PC上如果采用位图方式,copyPixes的效率比不断替换bitmapData的方式还是要高不少;而Stage3D的
2D框架则整体都很给力,性能均超过位图动画方式。然而在3个2D框架中,Starling的MovieClip类显的逊色一些,虽然最易用,效率却不太
满意,而Starling的QuadBatch则太给力了,在上面的图上占据性能最优。ND2D的批处理模式则显得逊色一些。Genome2D仍然表现的
性能强悍,批处理能力和Starling相当。
测试2:iPad 1 (iOS 5)
渲染模式设置:位图渲染采用<renderMode>gpu</renderMode>模式,而3个2D框架则采用<renderMode>direct</renderMode>模式。
从这个图可以看出,在iOS上,使用替换bitmapData的方式,效率要高于copyPixels的方式(和PC测试结果正好反过来)。而
Stage3D仍然是性能上的最佳选择,这个测试中Starling和Genome2D的性能均超越了传统位图模式。而ND2D则看起来并没有在移动设备
上实现很好的优化,表现比较逊色。Starling的MovieClip模式在这次测试中也有不俗表现。而采用批处理模式后,Starling和
Genome2D性能相当,两者占据了性能之王的宝座。
测试3:iPad 2 (iOS 5)
感谢AIR移动小组委员式神
完成了这个评测!测试设备为iPad 2,打包模式为正常打包模式,最高性能,数据如下:
在这张图里,明显传统位图动画已经和Stage3D不是一个层次的了。而Starling的强悍表现实在是太赞了!现在已经没有理由再怀疑Starling的执行效率了。
附上这个评测的屏幕截图:
欢迎您使用其它设备,来补充这个评测。
—————————————————————————————————————————
2012-6-22日补充:修改测试用例后的测试结果
我们修改了素材和测试代码,新的测试用例与上面的测试用例有所不同。上面的用例是一个单一动画,而下面的用例将使用8个动画(小鱼的动画有7种,猴子的动画1种)。
同样附上测试项目源码:MobileRenderTestsV2
测试4:多动画+Lenovo T410 (Windows 7)
测试结果:
因为这些素材没有普通电影剪辑版本,所以未对传统MovieClip模式进行测试。而其它测试结果,则与第一次单动画测试的结果基本吻合。
测试5:多动画+iPad 1 (iOS 5)
测试结果:
在iPad
1上,多动画模式,copyPixels依然表现不佳。Starling则表现稳定,与第一次单动画测试基本一致。Genome2D则表现有所下滑。到目
前为止,Starling的QuadBatch确实让我们印象深刻。正如Starling作者丹尼尔所说,你找不到在Starling中比
QuadBatch更快的渲染模式了。
这里还有一份ESDOT5月份做的一次评测,显示haxe-nme在性能上表现非常突出,后面我们也会评测并分享相关数据:
http://esdot.ca/site/2012/performance-showdown-starling-vs-nd2d-vs-genome2d-vs-haxe-nme
分享到:
相关推荐
Java2D动画效果是Java...总的来说,Java2D动画效果是通过Java2D API结合定时器实现的,涉及到图形绘制、对象状态更新和窗口组件的重绘。通过学习和实践,开发者能够创建出生动有趣的2D应用程序,提升用户的交互体验。
在本文中,我们将深入探讨如何使用Windows Presentation Foundation (WPF) 实现2D动画。WPF是Microsoft .NET Framework的一部分,提供了一套强大的图形系统,包括丰富的2D和3D绘图能力,以及用于创建动态用户界面的...
2D动画绘制软件的不断发展为创作者提供了无限的可能性,无论是独立艺术家还是大型工作室,都能找到适合自己的工具来实现富有创意的动画作品。随着技术的进步,我们可以期待未来会有更多创新的2D动画软件出现,继续...
它通过提供全面的骨骼动画系统、强大的编辑器以及与Unity引擎的深度集成,使得开发者能够以更高的效率和质量创造出引人入胜的2D动画作品。无论你是正在开发一款2D游戏,还是制作动画短片,Anima2D都将是你得力的助手...
Android的2D动画系统为开发者提供了丰富的动画实现手段。视图动画简单易用,适合旧版本系统;属性动画功能强大,适用于新版本系统。合理利用这两种动画,可以为用户带来生动、流畅的交互体验,提升应用的整体质量。...
总的来说,Puppet2D v2.0是Unity3D开发者在2D游戏开发中实现高质量骨骼动画的有力工具。它的易用性和灵活性,使得无论是独立开发者还是大型团队,都能快速高效地创造出富有表现力的2D动画。通过深入学习和熟练掌握...
Unity引擎提供了强大的2D动画工具,包括内置的Sprite Renderer、Animation组件等,但为了实现更复杂的骨骼动画,开发者通常会依赖第三方插件,如本话题提及的“spine”。 Spine是一款流行的2D骨骼动画软件,它允许...
在Android开发中,2D动画是提升用户体验的重要手段,它能为用户界面带来生动活泼的效果。本示例“Pro Android学习:2D动画小例子”深入浅出地展示了如何在Android应用中创建和使用2D动画。通过分析提供的源代码,...
本篇文章将深入探讨如何利用animation实现gif 2D动画的制作与应用。 首先,让我们理解GIF格式。GIF是一种无损压缩的图像格式,支持透明色和多帧动画。它通过连续播放一系列静态图像来创建动态效果,每帧之间可以...
在2D动画特效领域,我们主要探讨的是在二维平面上创建动态视觉效果的技术。这种艺术形式广泛应用于游戏、电影、电视、网页设计以及各种应用程序中,为观众带来丰富多彩的视觉体验。2D动画的核心在于通过时间和空间的...
这个名为"Android 简单2D动画源码.zip"的压缩包文件很可能包含了用于演示基础Android 2D动画实现的源代码。让我们深入探讨一下Android 2D动画的基础知识以及如何使用它们。 在Android中,2D动画主要分为两种类型:...
Cocos Creator 3.8.0 是一个强大的跨平台游戏开发框架,它的最新版本引入了对Live2D动画的支持,让开发者能够轻松地在游戏或应用程序中集成生动、逼真的2D角色动画。Live2D是一种实时二维动画技术,通过使用物理计算...
Unity 2D骨骼动画插件Puppet2D
根据给定文件的信息,本文将深入探讨基于J2ME(Java 2 Micro Edition)的手机游戏2D动画的实现方式。文章将从J2ME的基本概念出发,介绍其体系结构和技术特点,并着重分析如何利用J2ME技术实现高质量的2D动画效果。 ...
在Android平台上,2D动画是实现用户界面动态效果和交互性的重要工具。这份"简单2D动画源码.zip"文件包含的源代码示例将帮助我们深入理解Android中2D动画的工作原理。以下是对这个主题的详细阐述: 一、Android 2D...
它主要由四大部分组成: TraceMan--通过扫描仪扫描大量动画入计算机,并进行扫线处理 PaintMan--高质量的上色软件,使得大批量上色更加简单和快速 CoreRETAS和RendDog--使用全新的数学化工具,实现了传统动画摄影能...
在2D游戏中,动画常常是通过精灵表(Sprite Sheet)来实现的,这是一种将多个帧合并到一张大图中以节省内存和提高渲染效率的方法。开发者需要编写代码来指定每帧的位置,并按照适当的速度切换帧。 对于2D人物动画,...
本资源基于 Sprite、Animator 实现了人物行走 2D 动画,效果见→https://zhyan8.blog.csdn.net/article/details/126220021。
Quartz2D是苹果iOS和Mac OS X操作系统中用于图形绘制和动画的一种强大的技术,它基于Core Graphics框架。在这个"Quartz2D动画Demo"中,我们将会探讨如何利用Quartz2D来创建动态视觉效果,这对于iOS应用的用户体验...