如何利用FLASH 10的GPU加速功能

 先看看这个:http://hi.baidu.com/gideon_hwuang/blog/item/d49e5c26618df9118a82a1d5.html

 原文如下

作者: gideon hwuang

默认情况下,硬件加速合成在目前的Flash Player的10版本当中是关闭的,这样做是正确的。您应该只需要使用GPU的撰写如果您的应用程序真正从中受益。

如果你想在新的测试版版本使这一新功能,到目前来说唯一的办法,,通过在您的HTML /javascript 嵌入程式码中修改一个属性。\。传统的参数定义Flash内容是"window", , “opaque”和“transparent” 。与新的Flash Player 10中,这些参数增加到了5个,增加了“direct”和“gpu” 。

wmode = “direct”

“direct” 使得播放器,完全避开父网页浏览器的渲染。您可以把他看成跟单独的播放器类似。

wmode = “gpu”

“gpu”是完全的硬件加速合成。但是注意到, GPU模式不是灵丹妙药, 对一些都加快,在某些情况下它可能在事实上会牺牲性能。

 

最后一句说的真含糊啊 所以我又查了查:

从adobe对flashplayer10的新功能宣传的话从可以看出来只有位图和视频才能利用GPU加速,
滤镜和混合模式不是显示对象,先不提它。所以只有Bitmap和Video这两个显示对象类能利用GPU加速。
对于动画而言,只有位图动画能利用GPU加速,其它动画一律不行。(至于位图动画的做法不在文章内容范围内,这里我就不说了,哈)。

flashplayer10的GPU加速需要显卡支持OpenGL2.0。如果不支持继续用CPU运行。(所谓的兼容性问题是指显卡支不支持OpenGL2.0,而不是flashplayer10开启GPU加速和电脑有兼容性问题)

能优化位图动画也行啊,就是不知道怎么flex里什么动画算是位图动画,有查到有高人说:

开了不一定快。不同机子 不同显卡有不同效果。
 。。。。。。

再查查:

http://www.kaourantin.net/2008/05/what-does-gpu-acceleration-mean.html

 

对flash10号称的硬件加速做一些解释。

最近发布的flash 10 beta版包含两个新的窗口模式(wmode),这两个模式能够控制flash player将图形渲染到屏幕的方式。

以前有以下三种模式:

normal:
该模式使用常用的绘图函数将栅格化的数据绘制到屏幕上。在window下就是将按位将图像显示到屏幕上,在OSX上就如果浏览器支持就使用CopyBits 或 Quartz2D这两种方式。

transparent:该模式会在浏览器的HTML渲染层面做alpha混合,显示swf文件下面的html元素。alpha混合通常会严重消耗CPU资源,因此,一般建议不要使用这种模式。在IE下并不是真正的穿透了像素,而是使用了浏览器提供的 DirectDraw context 将内容绘制成swf的一部分。

opaque:
听起来神秘,实际上和transparent模式是类似的,使用了IE中的DirectDraw 将内容绘制到swf中,不同的是它是替换掉swf文件中的内容,而不是融合。

现在来看看两种新模式:

direct: 这种模式会尝试以最快的方式或是直接将图形渲染到屏幕。大多数情况下,它会忽略浏览器的一些诸如计算和html标签的重叠之类的请求。该模式的一个典型应用是视频回放。在windows模式下,该模式在vista系统中使用 DirectDraw 或者 Direct3D,在OSX和Linux下用OpenGL。使用该模式不会影响渲染效果。

gpu:
使用显卡的一些功能已经很成熟了,这和OSX以及Vista桌面管理器的处理方式类似的,窗口中的内容(在flash中就是影片剪辑)还是用软件渲染,但是最后结果的合成是用的硬件。如果可能,我们也会在显卡中对视频进行缩放。在Flash的以后各个版本中,越来越多的软件栅格化工作都会被移到GPU中执行,而现在仅仅是个开始。在Windows操作系统下该模式使用Direct3D,在OSX花和Linux宏使用OpenGL。

现在就一些让人疑惑的地方做出解释:

1、Flash Player使用Video card进行渲染并不意味着一定会更快,实际上在很多情况下反而会变慢。

还是很不解?那么就对了,这意味着你有这和一般人对GPU一样的理解。

需要交给GPU计算的内容必须按照GPU的功能需求进行精确的设计。在Flash内部的栅格化器能够针对GPU对数据做一些优化(这些优化是GPU不能完成的),那么开发者应该要知道GPU是如何工作的,并将自己需要交给GPU渲染的内容做出相应的调整。我知道这种阐述了无用的,除非我能够提供一些指导,在不久的将来我们会提供的。

2、GPU模式对硬件的需求也是很呆板的。你的显卡至少要支持DirectX9,本质上对硬件还有诸如在Vista下允许Areo Glass等需求。Aero Glass 涉及到一些我们需要的硬件功能。因此,如果Aero Glass不能正常工作,那么不管是否是GPU模式,Flash Player都无法正常工作(需要申请一点:gpu模式并不需要 Aero Glash,我这里只是谈谈硬件需求)。

3、GPU模式下像素的保真度是无法保证的,你必须要知道在不同的机器上显示可能会出现偏差,甚至色彩不协调,包括视频。未来我们会对这方面做出改善。我们会尽力减少这些瑕疵,但是请记住,有些东西我们是无法控制的。

这里有个例子,左边是gpu模式下的现实效果,右边是normal模式。这是一个320*240的视频,视频显示了几个文字。毫无疑问gpu模式下渲染效果要好很多,因为它使用了UV渲染。

 

4、帧率超出屏幕分辨率的情况。如果你设置的帧率大于60,那么肯定是没有意义的,gpu和direct模式都是这样的。在大多数情况下,你的帧率都不会超过50-55。

5、请不要草率的使用gpu或者direct模式。这些新模式可能会让你付出昂贵的代价,它会疯狂的消耗cpu和内存,直到你的浏览器卡住不动。你最好控制在一个html种最多只有一个swf使用这两种模式。

6、显卡的这些功能将我们和生产商以及驱动联系起来了。需要告诉你的是,如果你使用了这种新模式,那么由于硬件不兼容以及软件栈中的各种bug的原因,会有大量的用户都无法看到你的内容。

终究,flash beta版本中并没有最大限度的使用gpu的功能,我们在不断努力,但是仍然需要一段很长的时间。

 如果以后我放弃了flash,我想理由也就是性能问题,gpu的问题吧

你可能感兴趣的:(如何利用FLASH 10的GPU加速功能)