专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Flash

[转]怎么利用FLASH 10的GPU加速功能

发布时间:2011-06-27 19:36:27 文章来源:www.iduyao.cn 采编人员:星星草
[转]如何利用FLASH 10的GPU加速功能
原地址:http://baixiaozhe.iteye.com/blog/653599

先看看这个: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的问题吧
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: