[android] 2D 그래픽 엔진 Skia
android 2013. 6. 5. 14:28안드로이드에서 2D 그래픽 엔진( Graphic engine ) 으로 사용하고 있는 것은 Skia라는 이름의 엔진이다. 개발밥을 먹으면서 써보지는 않았어도 대충 들어는 봤어야 하는데, 생전 처음 듣는 이름 이었다. 역사를 찾아 보니 아래와 같은 기사가 있었다. [1]
게다가 구글은 그 분야의 인수 및 인재 조달도 추진 중이다. 소형기기 제조엡체인 데인저(Danger)의 설립자이자 뒤에 휴대 전화용 소프트웨어 제조업체인 앤드로이드(Android)를 설립한 앤디 루빈(Andy Rubin)은 앤드로이드의 인수와 함께 2005년에 구글에 입사했다.
또한 구글은 모바일 애플리케이션 개발 기업인 레큐와이어리스(Reqwireless) 및 스키아(Skia)라는 기업도 인수했다. 스키아의 첫 제품은 휴대 기기로 2D 그래픽스를 렌더링하는 휴대용 그래픽 엔진이다.
안드로이드를 2005년 8월에 인수하였고, Skia는 같은해 11월에 인수 하였다. [2]
안드로이드에서 GUI를 담당하는 중추 역할인 그래픽엔진임에도 관련 자료가 많이 없는 것 같다. 안드로이드가 openSource 이긴 한데, Skia 관련 자료가 부족한 이유는 google에서 주도적으로 개발하면서 관련된 문서 및 reference가 빈약하기 때문인 것 같다.
구글에서 제공하는 skiadocs page에서 약간의 정보를 찾을 수 있었다. [3]
Skia is a complete 2D graphic library for drawing Text, Geometries, and Images.
- 3x3 matrices w/ perspective
- antialiasing, transparency, filters
- shaders, xfermodes, maskfilters, patheffects
- subpixel text
Device backends for Skia currently include:
- Raster
- OpenGL
- XPS
- Picture (for recording and then playing back into another Canvas)
skia에도 GPU 를 직접 사용해서 hardware acceleration을 사용하는 구조가 있는데, 안드로이드 View System은 독자적인 GPU 지원 구조를 만들어서 사용하고 있다고 한다.
아래 그림은 안드로이드의 그래픽 서브 시스템을 도식화한 것이다. [4]
우리가 많이 사용하는 Canvas가 HWUI와 Skia를 이용해서 Surface로 요청을 하는 구조이다. 3.0 이전에는 Skia로 다 처리되던 것이 3.0 이후부터는 성능 이슈로 인해서 skia 부분이 점점 HWUI로 대체되고 있다. HWUI 모듈은 GPU를 사용하는 UI component 이다. Android 3.0 부터 tablet에 대한 지원이 되었는데, tablet이 화면이 크다보니 기존에 사용하던 skia로는 animation이 매끄럽지 않아서 HWUI나 renderscript 같은 것이 등장하게 된 것 이다.
Skia에 대해서 더 궁금한분은 직접 소스를 받아 보시길.. [5]
참고
[1] 신문기사: http://www.zdnet.co.kr/news/news_view.asp?artice_id=00000039156220&type=det
[3] 스키아 문서 : https://sites.google.com/site/skiadocs/home
[4] 안드로이드 그래픽 서브 시스템 : http://developer.mips.com/2012/04/11/learning-about-android-graphics-subsystem/
[5] skia 소스 : https://android.googlesource.com/platform/external/skia/