关于win7硬件加速在哪速

今日网络工具导读
&&&&&& &&&四大主流浏览器GPU硬件加速测试对比
四大主流浏览器GPU硬件加速测试对比
日 18:24&&【编译】 作者:驱动之家 编辑:
  泡泡网软件频道3月10日&根据微软的说法,IE9能对整个Web平台进行完全而充分的硬件加速,它全面支持HTML5 GPU硬件加速,借助GPU的效能来渲染标准的Web内容,如文字、图像、视频、SVG(可缩放矢量图形)等网络信息,减少负荷,大大的提高浏览器的速度。硬件加速已经被各大浏览器厂商争相追捧,不同的浏览器使用不同的方法来实现硬件加速,因此它们的表现也不尽相同。微软本周再次发布了一篇测试报告,使用IE Test Drive官方网站上新增的测试项目“圣诞老人的工作”(Santa's Workshop)来对比测试各浏览器,对比它们在硬件加速方面的表现。
   在“圣诞老人的工作”测试中,页面中会有一个成绩面板,上面显示了多少个小精灵在工作(elves working),他们共收集了多少圣诞礼物(presents packed),这些小精灵每分钟收集的礼物数量(presents per minute),在小精灵们收集礼物时你还可以听到圣诞老人“哈哈”的笑声。
   这个测试项目主要考验浏览器的SVG和JavaScript渲染性能,它使用了很多新兴的HTML5和SVG模式,比如SVG DOM处理、SVG元素变换、通过HTML5 audio标签播放背景音乐。测试会追踪浏览器的页面渲染帧率,从而决定删除或添加小精灵,当帧率超过55fps,页面中就会新增一个小精灵,当帧率低于 35fps时就会删去一个小精灵。你的浏览器对HTML5 scene渲染的越快,就会有越多的小精灵来帮助圣诞老人收集礼物。
   测试地址:http: ///testdrive/performance/SantasWorkshop/
   从上面的结果可以看出,IE9的表现远远超过Chrome 11、Firefox 4和Safari 5。浏览器间的差别:
   下面分别来看一下不同浏览器在进行“圣诞老人的工作”测试时对、GPU的使用以及帧率。下面表格是微软通过Windows性能工具包得出的,测试平台为戴尔笔记本(2.26 GHz
Core 、4GB物理内存、NVIDIA GeForce GTX 260M、250GB 7200 RPM硬盘、系统)。
   IE9 RC:50个小精灵每分钟收集238件礼物,动画效果流畅。
   下图中,红色代表了测试中使用了一个完整的CPU内核;蓝色代表了GPU也在渲染场景到屏幕上;绿色是GPU完成场景渲染后屏幕的刷新。
   Chrome 11最新开发版Build 11.0.696.0:15个小精灵每分钟收集71件礼物。
   Firefox 4 Beta 12:1个小精灵每分钟收集4件礼物,页面刷新帧率为13fps。
   Safari 5:和Firefox 4一样,1个小精灵每分钟收集4件礼物,不过其表现比Firefox 4稍好一些,其帧率为20fps。
   从上面测试结果可以看出,四款浏览器都使用了一个完整CPU内核和相近的GPU计算,不过每个浏览器能够使用这些资源执行的工作和带来的用户体验却有显著的不同,微软将这归结为完整硬件加速和部分硬件加速的差别,IE9能对整个Web平台进行完整硬件加速,而其它浏览器则仅针对部分Web内容进行了硬件加速。
   完整硬件加速VS.部分硬件加速
   在IE9中,开发人员能够使用完整的硬件加速。实际上,完整利用GPU是一项极具挑战性的工作,直接写至中级层和库而取代操作系统的本地支持就更加困难了,但是Windows的DirectX在对3D游戏的支持中获取了大量的经验,是当前最高性能的GPU渲染系统。
   当你使用其它支持硬件加速的浏览器测试IE Test Drive网站上的项目时,你会发现其性能在某些方面能与IE9不分上下,但是在很多方面相差甚多。这种差距就反应了完整硬件加速和部分硬件加速之间的区别。因为IE支持最新出现的Web标准,它们也可以使用完整的硬件加速。■
最新热点推荐:
浏览本文的用户还购买了
延伸阅读: &&&&&&&&&&&&&&&&
扫一扫 关注泡泡网官方微信
也可搜索官方微博号:PCPOPWX
一周热文 今日热文 高清图文
推荐文章推荐产品
产品号乐视 乐Pro3There is no row at position 0. 有误产品号HTC ViveThere is no row at position 0. 有误产品号佳能 EOS 5D Mark IVThere is no row at position 0. 有误
请您留下希望的价格和联系方式开团前,我们会通知您。
心理价格:元
邮  箱:@qq.com
手  机:
* 手机/邮箱任填其一android(226)
翻译:D.Winter
从Android 3.0 (API level 11)开始,Android 2D渲染管线能更好的支持硬件加速。硬件加速通过GPU执行各种绘画操作。因为硬件加速需要消耗更多的资源,所以你的App需要更多的RAM。
开启硬件加速最简单的方法是在整个应用全局设置。如果应用只使用标准的和,全局设置不会产生不利的影响。然而,因为硬件加速不支持所有的2D绘制操作,开启会影响一些自定义View或者绘制调用。问题显示为不可见的元素、异常,或者错误渲染像素。为了补救这些,Android提供给你选项开启或者关闭硬件加速在以下几个层面:
* Application
* Activity
如果你的应用执行自定义绘制,开启硬件加速,测试应用在实际的硬件设备上去查找问题。
* 控制硬件加速*
你可以在以下层面控制硬件加速
* Application
* Activity
Application 层
在你的Android manifest文件里,添加以下属性到标签里,针对整个应用开启硬件加速:
Activity 层
如果整个应用开启硬件加速表现的不稳定,你也可以针对单个Activity进行控制。在Activity层开启或者关闭硬件加速,你可以使用android:hardwareAccelerated属性在标签内。下面是单个Activity中关闭硬件加速的例子:
如果你需要更细致的控制,可以在获得的Window里开启硬件加速:
getWindow().setFlags(
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
* 注: 在window层不能取消硬件加速。
通过下面代码,你可以在运行时关闭硬件加速:
myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
注:你不能在view层开启硬件加速。 View面板有其他方法关闭硬件加速。更多详细内容请看View layers|View面板。
* 判断View是否已经硬件加速*
有时候,知道一个应用当前是否硬件加速是非常有用的,尤其像自定义View。这非常有用,当你的应用做大量的自定义绘制并且不是所有操作都支持新的渲染管道。
有两个方法查看应用是否硬件加速:
&如果附属于硬件加速的窗体,将会返回true。&如果已硬件加速,将会返回true。
如果你一定要在绘制代码中进行这个查看,请尽可能用代替。当一个View附属于硬件加速窗体,它仍可以通过非硬件加速的Canvas来绘制。这种情况,在实例化时,绘制一个View到bitmap中,为了缓存目的。
* Android绘画模型*
当开启硬件加速,新的绘画模型利用显示列表在界面上渲染你的应用。
为了完全理解显示列表和对你的应用有怎样的影响,知道Android不通过硬件加速怎么样绘制View也很重要。下面的篇章阐述基于软件和基于硬件的绘画模型。
* 基于软件的绘画模型*
在软件绘画模型中,View通过以下两个步骤被绘制:
使层次失效绘制层次
每当应用需要更新部分UI时,调用(或者它的变形)在任意需要改变内容的view里。这些失效信息被传播始终在view层,计算需要重绘的界面区域。然后,Android系统绘制任意view在这些区域。不幸的是,这种模型有两个缺点:
* 第一,这种模型需要执行的大量的代码在每一次绘画。比如,如果你的应用在按钮里调用了&,而且这个按钮在另外一个view之上,此时Android系统会重绘这个view,即时它没有发生改变。
* 第二个问题是绘画模型会隐藏你应用的错误。从Android系统开始重绘view,当他们与脏区域融合时,你改变的view的内容可能会被重绘即时没有被调用。此时,你依赖于另外一个view使之失效来达到合适的反应。这个反应会在任何时候改变在你修改你的应用时。因此,你需要一直调用在你的自定义view上,无论你修改数据或者影响你view绘画代码的声明。
注: Android view当它的属性改变时,自动调用&,比如背景颜色或者文本框内容。
* 基于硬件的绘画模型*
Android仍使用invalidate()和draw()来响应界面更新和视图渲染,不同的是控制当前绘制。Android系统将他们记录在显示列表来代替马上执行绘画命令,它包含view层绘画代码的输出。另外一个优化是Android系统只需对记录和更新显示列表,通过调用invalidate()将view标记为。
还没失效的View通过重新运行之前的记录显示列表被重绘。这个新绘画模型包括三个阶段:
1、层失效2、记录更新显示列表3、绘画显示列表
用此模式,你不能依赖与脏区域交叉的view来执行它的&。为了确保Android系统记录一个View的显示列表,你必须调用&。
忘记这么做会导致视图看起来一样,甚至在改变它后。一旦发生,这个BUG很容易被发现。
使用显示列表也利于动画增强,因为设置特殊的属性,像透明度和旋转, 不需要使目标视图失效(它自动完成)。这个优化也适用于显示列表的视图 (你应用的任一视图都硬件加速) 比如,假设有个在上有个。LinearLayout的显示列表看上去这样:
DrawDisplayList(ListView)
DrawDisplayList(Button)
假设你现在要改变ListView的不透明,在调用setAlpha(0.5f)后,显示列表变成:
SaveLayerAlpha(0.5)
DrawDisplayList(ListView)
DrawDisplayList(Button)
的设置代码没有被执行。系统只更新显示列表中更简单的LinearLayout。
在未开启硬件加速的应用中,列表的绘制代码在其父亲中还会被执行一次。
* 不支持的绘画操作*
当启动硬件加速, 2D渲染通道支持一般使用的画布绘画操作和一些较少使用的操作。所有的绘画操作被用于渲染程序,默认为widget和layout,还有些高级应用比如反光和纹理平铺也是被支持的。下面是不被硬件加速的操作清单:
Canvas*&*&*&* [(,
int, int, android.graphics.Path, float, float, android.graphics.Paint) drawTextOnPath()]* [(,
int, float[], int, float[], int, int[], int, short[], int, int, android.graphics.Paint) drawVertices()]Paint*&*&*&Xfermodes*&*&
另外, 有些操作在硬件加速开启后会发生变化:
Canvas*&&:
XOR, Difference and ReverseDifference clip modes are ignored. 3D transforms do not apply to the clip rectangle [(,
int, int, float[], int, int[], int, android.graphics.Paint) drawBitmapMesh()] : colors array is ignoredPaint*&&:
ignored*&&:
filtering is always on* [float, float, int) setShadowLayer()]((
: works with text onlyPorterDuffXfermode*&&will
be equivalent to&&when
blending against the framebuffer.*&&will
be equivalent to&&when
blending against the framebuffer.*&&will
be equivalent to&&when
blending against the framebuffer.ComposeShader*&&can
only contain shaders of different types (a&&and
instance, but not two instances of&&)*&&cannot
contain a&
如果你的应用受缺失属性和限制的影响,你可以关闭硬件加速,在你受影响的部分调用[android.graphics.Paint) setLayerType(View.LAYER_TYPE_SOFTWARE, null)]((
。这个方法, 你仍可以利用硬件加速其他任一地方。查看得到关于硬件加速的更多信息。
* View 层*
在Android的不同版本, view已经有能力渲染进入屏幕缓存区内,无论是view的绘制缓存,还是使用[android.graphics.Paint, int) Canvas.saveLayer()]((
factor合成到界面。
Android 3.0 (API level 11)开始,你有更多的控制通过[android.graphics.Paint) View.setLayerType()]((
你可以使用参数使用滤色镜,特殊的混合模式,或者设置为不透明。view可以使用三种layer类型的其中一种:
:被一般渲染并且不会被进入屏幕缓存。这是默认行为。
:由硬件渲染到硬件纹理,如果应用开启硬件加速。如果未开启,
:由软件渲染到位图。
The type of layer you use depends on your goal:
Performance* : 由硬件渲染到硬件纹理,一旦View被渲染到layer,它的绘图代码不会被执行直到调用&。有些动画,像透明度动画,直接放入layer,由GPU完成非常有效率。
Visual effects* :使用硬件或者软件layer类型和,对view应用特殊的视觉处理。比如,你使用绘制一个view为黑色或者白色。
Compatibility* :使用软件layer类型促使view软件渲染。如果硬件加速的,有着渲染问题, 这是一个简单的方法来绕过限制的硬件渲染管道。
* View层和动画*
开启硬件加速,硬件层提供提供更快的和更平滑的动画效果。当有很多绘图操作时,动画每秒60帧不是一直能保持的。硬件层可以减轻这个,通过渲染为硬件纹理。硬件纹理可以优化View,不再需要视图不断重绘本身。当你调用或者改变view属性时,view才会重绘。如果动画显示的不够平滑,考虑开启硬件层在你使用的View。
当view进入后台硬件层,层被混合到界面,view的属性被控制。设置这些属性很有效果,因为他们不需要view失效或者重绘。以下属性作用于混合层。
通过setter测试属性,获得最优效果:
alpha: 改变层透明度x, y, translationX, translationY: 改变层位置scaleX, scaleY: 改变层大小rotation, rotationX, rotationY: 改变层的三维定位pivotX, pivotY: 改变层的转换源 当view被作为启用时,这些属性被使用其他名字。如果你想使用这些属性,请调用适当的setter或者getter。比如,为了改变alpha属性,调用&。下面的代码片段展示了最有效的方法旋转viewiew在3D的Y轴上:
view.setLayerType(View.LAYER_TYPE_HARDWARE, null);
ObjectAnimator.ofFloat(view, &rotationY&, 180).start();
因为硬件层消耗媒体资源,强烈介意你只在持续动画时开启,并且在动画结束时关闭。你可以使用animation listeners完成:
View.setLayerType(View.LAYER_TYPE_HARDWARE, null);
ObjectAnimator animator = ObjectAnimator.ofFloat(view, &rotationY&, 180);
animator.addListener(new AnimatorListenerAdapter() {
public void onAnimationEnd(Animator animation) {
view.setLayerType(View.LAYER_TYPE_NONE, null);
animator.start();
更多信息,请看。
* 要领和技巧*
开启硬件加速2D图像可以立即提高性能, 但你仍可以设计你的应用使用GPU性能,以下推荐:
减少应用中视图的数量* 视图越多,速度越慢. 请求软件渲染通道也越慢。减少视图是优化UI的最简单的办法。避免透支* 不要在顶层绘制太多。去除那些被完全遮挡住的图层。如果你要绘制相互叠加的多个图层,考虑将他们合并为一个图层。不要在draw方法中创建render对象* 一个通常的错误是创一个对象或者对象,在任何时候rendering方法被调用。这使得垃圾收集器运行的更频繁,忽视缓存,在硬件通道优化。不要太频繁的改变图形* 图形实例化时,由texture masks被渲染。任何时候你改变路径, 硬件通道创建一个新的mask,这是非常耗资源的。不要太频繁的改变位图* 任何时候你改变一个位图的内容,它作为GPU纹理重新被上传在下一次绘制时。使用透明度要小心* 当你通过来改变透明度时,&,或者,在off-screen
buffer被渲染,它两倍于使用fill-rate。当应用alpha在非常大的界面上时,考虑设置视图属性LAYER_TYPE_HARDWARE.转自:
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1130849次
积分:10342
积分:10342
排名:第1282名
原创:113篇
转载:238篇
评论:147条
(2)(1)(7)(24)(9)(8)(20)(6)(17)(59)(52)(51)(58)(4)(1)(1)(2)(9)(1)(3)(2)(4)(8)(2)|  
|  
|  
|  
|  
只需一步,快速开始
查看: 5807|回复: 3
关于硬件加速和画面花屏问题
主题帖子积分
中级玩家, 积分 231, 距离下一级还需 19 积分
中级玩家, 积分 231, 距离下一级还需 19 积分
虽然不是很合适发这里.也想达人们指点一下.自从装了台新机后就发现看电影或视频都是花屏.就是全是颜色.后来在网上查了下.是硬件加速那的问题.要降到一定的程度才能正常看电影.看过电影后我把加速再调上来.进游戏.忘了是切出来或是什么动作.整个画面都花了...而且变成了800X600.只有4色...且不能调..只好重启....后来我看了下旧的机子.硬件加速也是全开的.但能看电影和游戏..这就是我不懂的地方了.请教一下有没有办法硬件加速全开.看电影也不花屏的方法..万分感激..&&显示器是22寸液晶16比9.显卡是3850.CPU是3核.
主题帖子积分
游戏达人, 积分 3028, 距离下一级还需 472 积分
游戏达人, 积分 3028, 距离下一级还需 472 积分
我也用的3850,游戏、电影都正常。LZ升下驱动看看,现在最新的是8.12
主题帖子积分
资深玩家, 积分 13978, 距离下一级还需 4022 积分
资深玩家, 积分 13978, 距离下一级还需 4022 积分
贡献度2723
确实网上的解决办法是禁用硬件加速,不过偶没找到根本解释,觉得很没道理啊,显卡明明支持,禁用硬件加速游戏时会损失性能的;偶也是3850的卡,没进行相关设置,硬件加速应该也是开了的,没这种问题
觉得可能还是显卡驱动或解码器的问题,建议你先进安全模式把显卡驱动和各种播放器、解码器全删干净,再装最新的催化剂驱动,装个完美解码或终极解码试试(已经集成了暴风、KMPlayer播放器和全部主流解码器)
主题帖子积分
中级玩家, 积分 231, 距离下一级还需 19 积分
中级玩家, 积分 231, 距离下一级还需 19 积分
首先谢谢了.由于我刚装了机子的问题.WINDOWS MEDIA PLAY 没有升到最新.所以出了上面的问题.现在升级后就没问题了.呵呵[em24]
Powered by}

我要回帖

更多关于 硬件加速怎么开 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信