在android上使用cairo

cairo是一个2D库,在浏览器领域主要是mozilla firfox在用。

webkit实际上也有用到cairo,主要是efl,gtk等,但是在android上,webkit用的是skia。

因此在android要想用cairo就需要自己编译移植了。


android上有Bitmap,这个直接对应于cairo的image surface就可以用,

这个移植比较简单,主要是Bitmap是java的,cairo image surface是c++的,

所以要用到jni进行相应的交互调用,速度上还可以,以现在的arm频率,完全能满足非特效web。


2013年开始cairo对gles2的支持开始增加了,而且越来越好,

因此cairo也可以像skia一样直接调用gles2了。

但是要想在android上使用gles2,还需要主要两点:

1.cairo-gl-dispatch.c 需要直接调用的gles2的函数,不能中转

2.cairo-gl-shader.c 需要注意gles2对shader语言的限制比较多

在cairo直接调用gles2后,速度上提高不到,但是cpu占有小了很多,因此可以做一些web特效了。


你可能感兴趣的:(在android上使用cairo)