浅谈Google Skia图形引擎
来源:互联网 发布:吉林建筑大学网络接入 编辑:程序博客网 时间:2024/04/27 13:48
[转]浅谈Google Skia图形引擎 http://blog.sina.com.cn/s/blog_4a0a39c30100cog4.html Jserv's blog http://blog.linux.org.tw/~jserv/archives/002095.html
历史
2008年九月,Google宣布以改良过的WebKit为核心的网络浏览器Chrome,揭露了众多新特征,比方说崭新的[V8]JavaScript (ECMAscript) 执行引擎,或许因为太亮眼,掩蔽了所使用另一个开放原始码项目[skia],后者是个 2D向量图形处理函式库,包含字型、坐标转换,以及位图都有高效能且简洁的表现。不仅用于GoogleChrome 浏览器,新兴的Android开放手机平台也采用skia作为绘图处理,搭配OpenGL/ES与特定的硬件特征,强化显示的效果,本文简介GoogleSkia 的历史背景、应用层面,并探讨其程序设计模型。
Google为了搭建OpenHandset Alliance (OHA) 的Android平台,布局极久,背后的百人研发团队部份来自之前的并购案,其中两项具指标性意义:
2005年八月17日,收购美国Android公司,业务是手机软件开发,这当然就是现在开放源码Android计划的前身
2005年十一月,收购美国Skia公司,业务是向量绘图软件
被Google收购前的Android公司有着在IT产业为人所津津乐道的成果,本文就不多谈,而Skia公司自然也不是省油的灯。SkiaInc. 设立于北卡罗莱纳州的ChapelHIll,由MichaelReed (也称为MikeReed) 所创办,他在图形技术领域是相当顶尖的人物,与BenoitSchillings (BeOS 主要开发者,BeInc. 第二位工程师,现为NokiaCTO) 于专业手机软件开发公司OpenWave共事时,即在该公司产品OpenWavePhone Suite Version 7.0 (以下简称V7)引入精湛的向量图形技术,在50-300kb 空间的实做中,提供了图层overlay之间alphablended 预览、全功能向量矩阵转换等进阶功能。在加入OpenWave之前,MikeReed 服务于Apple,代表项目为QuickDrawGX,主导进阶图形与字型处理技术。BenoitSchillings 离开OpenWave转任TrolltechCTO 期间,MikeReed 开创了SkiaInc.,该公司第一个产品为SGL(Skia Graphics Library),一个非常严谨的向量显示引擎,能在低端设备比如手机、电视及其它手持设备之上,呈现高质量的2D图形。根据LocalTechWire的描述:
"Skia’sfirst product, SGL, is a portable graphics engine capable ofrendering state-of-the-art 2D graphics on low-end devices such asmobile phones, TVs, and handhelds,” the Web site said. “SGL isfeature-set compatible with existing 2D standards, making it ideal toserve as a back-end for public formats such as SVG, PDF, and OpenVG.SGL is licensed as source or binary, and can be customized to matchspecific HW/framebuffer requirements.”
自2005年Skia被Google 收购后,一直相当神秘低调,直到2007年初,SkiaGL 相关的程序代码才被揭露,作为GoogleAndroid 平台的图形引擎,稍候的GoogleChrome 浏览器也采用Skia引擎。随着Android与Chrome(开放版本称为"Chromium")两大项目公布程序代码后,skia也一并公开原始程序代码,以ApacheLicense v2 释出(注意,这意味着与GPLv2授权不兼容),而Android与Chrome的程序代码库中都有一份[skia]的复制,因需求不同,做了部份的修改,比方说Chrome项目底下的[chrome/trunk/src/skia],需要注意的是,Skia本身是不涉及底层环境,如LinuxFramebuffer 或Gtk+衔接的处理,这也是何以Android(透过LinuxFramebuffer) 与Chrome(开发中的Linux版本使用Gtk+)需要提供一份修改,以便系统接轨,关于这方面的信息,可参照GoogleChromium 的开发日志[Graphicsin Google Chrome]
相较于Firefox1.x,后继的Firefox2.x/3.x 在图形显示方面有相当大的进展,很大层面归功于引入Cario向量图形链接库来处理网页绘制,而Skia就相当于扮演Cairo的角色,不过更轻量些。快速发展的WebKit俨然是从桌面应用跨足移动装置之网页引擎解决方案的首选,Apple与Google都有为数可观的全职工程师投入,拜因特网的威力,也有其它厂商与团体个人积极投入开发,目前WebKit支持的图形函式库计有Cairo,Gtk+, Qt4, WxWidgets, Cg (Mac 的非开放原始码函式库),Skia 等等,并以WebKit中classGraphicsContext 处理前述图形函式库的实做,可针对不同平台的特性,规范不同平台所需的宏与成员,详情可参考程序代码WebCore/platform/graphics/GraphicsContext.{h,cpp}。
Skia以C++实做,程序代码约八万行,基本某些未知的因素,可参考的文件相当有限,但Chromium的SVNlog 与程序代码则是现在最完整的文件,以下是其特征:
高度优化的软件rasteriser(module sgl/)
选择性透过OpenGL/ES,加速特定操作,如shader与textures(module gl/)
动画处理能力(moduleanimator/)
内建SVG支援(module(svg/)
内建若干imagecodec,如PNG,JPEG, GIF, BMP (modules images/)
内建文字处理,但缺乏泰文、藏文一类复杂文字处理的能力
效能特性:
对image与特定数据型态的Copy-on-write
内部存储器管理,谨慎地被免fragmentation
Thread-safety
Skia实做所需的相依性:
字型:FreeType (值得注意的是,FreeType的维护者DavidTurner 目前任职于Google),Windows GDI
多执行绪模型:pthread, Windows threads
XML:expat, tinyxml
- 浅谈Google Skia图形引擎
- 浅谈Google Skia图形引擎
- 浅谈Google Skia图形引擎
- 浅谈 Google Skia 图形处理引擎
- 【转载】浅谈Google Skia图形处理引擎
- 浅谈 Google Skia 图形处理引擎
- 浅谈Google Skia图形处理引擎
- 浅谈 Google Skia 图形处理引擎 (转载)
- Skia图形引擎--SkMatrix
- Google的矢量图形引擎skia开源了.
- /LGC图形渲染/淺談 Google Skia 圖形處理引擎
- android 的图形引擎 skia
- android 的图形引擎 skia
- android 的图形引擎 skia
- 编译 Google Skia 图形库
- 淺談 Google Skia 圖形處理引擎
- 谷歌公开来源Skia图形引擎
- android 的skia 图形引擎库
- jQuery UI - draggable 中文API
- 今天遇到的面试题
- PowerBuilder 编辑数据窗口后保存 引起 PB程序崩溃
- Intent的用法总结
- 什么是AOP?
- 浅谈Google Skia图形引擎
- pylibmc 安装过程
- Android利用系统广播---监听应用程序安装和卸载
- linux-0.11
- You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version
- jquery操作radio,checkbox,select集合
- HTML5将给开发者带来什么?
- 安装过软件后,自动运行软件。
- cancelBubble = true