More Related Content Similar to Android hw accelerated_2d_rendering Similar to Android hw accelerated_2d_rendering (20) Android hw accelerated_2d_rendering1. Android 硬件加速的2D绘图研究
硬件加速的2D
2D绘图研究
Android HW Accelerated 2D Rendering
Roger
yixx@ucweb.com
roger2yi@gmail.com
www.twitter.com/roger2yi
https://plus.google.com/
3. HW Accelerated 2D Rendering
• 硬件加速的2D绘图主要包括两个方面
– 基本图元绘制(Primitive Drawing - Shape,
Text,Image)
– 图层混合(Layer/Surface/Window Composite)
2012-5-15 Roger, UC
4. Some Android Graphics True Facts...
• 从Android 1.0开始,窗口混合就开
始使用硬件加速
– 右图包含了4个窗口,分别是 - 状
态栏,壁纸,lanucher和菜单
– 像通知栏的拖拉,Activities的切换
动画,菜单,对话框的弹出/消失
动画都使用了硬件加速进行窗口混
合
• 在Android 3.0之后,窗口内部的内
容绘制(Canvas)才开始支持硬件
加速
2012-5-15 4
8. View Level
• 将View的Layer Type设置为SW Layer,可以使View创建
一个内部的位图缓存,View的内容先绘制到位图,然后再
把位图拷贝到Window Surface上
• 相当于关闭该View的硬件加速绘图
2012-5-15 Roger, UC
9. View Layer Type
• 在Android 3.0+后,View一共有3种Layer Type
– None,默认类型,View的内容直接绘制到Window
Surface上面
– SW Layer,创建一个内部的位图缓存,View的内容先
绘制到位图,然后再把位图拷贝到Window Surface上
– HW Layer,创建一个内部的硬件加速的帧缓存,View
的内容先绘制到帧缓存,然后再拷贝到Window
Surface上,只有在Window是硬件加速时才支持,否
则自动变为SW Layer
2012-5-15 Roger, UC
10. 2D Rendering Mode
• 在Android 3.0后,一共有5种主要的2D渲
染模式,1主要用于游戏,2,3,4都可以
用于一般的View Hierachy渲染,5主要用
于动画和实时交互场景
1. 通过SurfaceHolder获得Window或者SurfaceView的
Surface Canvas(SurfaceHolder.lockCanvas),在单
独的Render Thread中绘图
2. Window Surface硬件加速,View的Layer Type为
None,在主线程(UI线程)中绘图(View.onDraw)
2012-5-15 Roger, UC
11. Cont.
3. Window Surface非硬件加速,View的Layer Type为
None,在主线程(UI线程)中绘图(View.onDraw)
4. Window Surface硬件加速,View的Layer Type为SW,
在主线程(UI线程)中绘图(View.onDraw)
5. Window Surface硬件加速,View的Layer Type为HW,
在主线程(UI线程)中绘图(View.onDraw)
2012-5-15 Roger, UC
12. Canvas
• Android3.0+后有3种不同的Canvas类型:
– android.graphics.Canvas
• 通过Bitmap生成的Canvas
• 当View的设置为SW Layer时,View在onDraw中获得的 Canvas
– android.view.Surface$CompatibleCanvas
• 通过SurfaceHolder.lockCanvas获得的Canvas
• 当Window非硬件加速时,Window中的View在onDraw中获得的 Canvas
– android.view.GLES20RecordingCanvas (HW Accelerated!!!
HW Accelerated!!!)
• 当Window硬件加速时,Window中的View在onDraw中获得的 Canvas(View的
Layer Type为None或者HW)
– isHardwareAccelerated用于判断Canvas是否使用硬件加速
2012-5-15 Roger, UC
15. Test
• 对应渲染模式1~4 • 测试项包括:
– 2D (SV) – Draw Canvas 填充整个
Canvas
– 2D (HW) – Draw Circle2 圆形填充
– 2D (SW1) – Draw Rect 矩形填充
– 2D (SW2) – Draw Arc 弧形填充
– Draw Image 位图绘制
– Draw Text 文本绘制
2012-5-15 Roger, UC
16. Samsung Draw Canvas Draw Circle2 Draw Rect Draw Arc Draw Image Draw Text
Galaxy Tab (texture/gra (texture/gradi (texture/gradi (texture/gradi (w/o filter)
10.1 (3.2) dient/color) ent/color) ent/color) ent/color)
2D (SV) 59.4/24/60 51.7/38/46.8 19/10.5/13.8 13.4/21/25.8 11/25 13.1
2D (HW) 43.3/46/56 25/24.6/24.5 27.1/24/28 22.3/24/27 34/34 5
2D (SW1) 58.5/21/60 52.3/31/38 19.5/7/10.2 15/15.6/18.2 10.6/22 12
2D (SW2) 27.6/17/28 26.9/21/22 15.1/7/8.5 12/13.6/15.4 9.6/16.6 11
2012-5-15 Roger, UC
17. Nexus S Draw Canvas Draw Circle2 Draw Rect Draw Arc Draw Image Draw
(4.0.3) (texture/gradient (texture/gradie (texture/gradie (texture/gradi (w/o filter) Text
/color) nt/color) nt/color) ent/color)
2D (SV) 55.5/55.6/54.5 50.5/51.6/50 33.3/23.4/32 46/35.5/47.8 35.5/55.6 9
2D (HW) 42/42/53.8 30/30.0/31.2 45/16/45.7 40.5/13/44 28/28 3.2
2D (SW1) 55.7/55.9/55.4 52.6/49.4/50 37/17.7/28.6 47.5/29.7/43 28.5/49.2 8.5
2D (SW2) 48.2/42.8/41.4 43.7/36.4/39 27.4/16.6/22 35.6/24/32.4 21.4/32.2 8
2012-5-15 Roger, UC
19. Cont.
• 硬件加速绘图主要的优势在于
– 位图绘制,特别是带拉伸,旋转,扭曲
– 渐变填充
– 图层混合
• 硬件加速绘图主要的劣势在于文本绘制
• 充分利用硬件加速的图层混合(开启View的HW Layer)是实现60fps
的实时交互和动画的关键
• 对高分辨率和具备更快的GPU的新的旗舰手机和平板,硬件加速的优
势越来越明显,没有支持硬件加速的应用卡顿会十分明显
2012-5-15 Roger, UC
20. Some Tips
• 硬件加速绘图不是Silver Bullet,always profile your
bottleneck
• 避免在UI线程或者渲染线程中进行IO和网络操作(使用
Strict Mode进行检测)
• 避免频繁修改位图(Bitmap),图形(Shape),避免在
绘图方法中创建画笔(Paint)和路径(Path),特别是
处于硬件加速时
• 对于硬件加速,尽可能batch drawing code,比如调用
drawLines比多次调用drawLine要高效的多
2012-5-15 Roger, UC
21. Renference
• Android 3.0 Hardware Acceleration
• New Gingerbread API: StrictMode
• How about some Android graphics true facts?
• How about some Android graphics true facts? [More]
• Understanding Hardware Acceleration on Mobile
Browsers
• Android 圖形系統 -- 設計與實做分析
2012-5-15 Roger, UC