http://blog.csdn.net/andyhuabing/article/details/7345486

《android系统级深入开发---移植和调试》读书笔记

一、android opengl的基本层次结构



二、Dount(甜饼)及之前的android中的OpenGL结构。

1、OpenGL的实现库

OpenGL的实现库由android自带软件库libagl(基于软件算法)实现,或者由各个不同平台的硬件libhgl实现,libhgl一般需要调用OpenGL的驱动程序实现。其中libagl的路径为:framework\base\opengl\libs\libagl:生成libagl.so,OpenGL的软件实现库。

不过目前本机上安装的android中没有这个路径。 2、OpenGL的本地框架库

头文件路径:

frameworks\base\opengl\include\EGL

frameworks\base\opengl\include\GLES

本地库的lib路径

frameworks\base\opengl\libs\GLES_CM    ---opengl es 1.x:生成库libGLESv1_CM.so

frameworks\base\opengl\libs\EGL   :生成库libEGL.so

3、OpenGL的JNI部分

frameworks\base\core\jni\com_google_android_gles_jni_GLImpl.cpp

frameworks\base\core\jni\com_google_android_gles_jni_EGLImpl.cpp

二者分别对应egl和gl的实现。其中EGLImpl中的各个接口负责一个管理功能,而GLImpl中的各个接口对应于OpenGL的GLES/gl.h头文件中定义的各个OpenGL功能函数。

4、OpenGL的java接口API 标准opengl的类代码路径: frameworks\base\opengl\java\javax\microedition\khronos\egl frameworks\base\opengl\java\javax\microedition\khronos\opengles 这是标准的OpenGL类,主要的文件是GL10.java和GL11.java;在OpenGL ES中,主要的文件是EGL10.java。 android通过集成方式实现OpenGL标准的接口,代码路径为: frameworks\base\opengl\java\com\google\android\gles_jni 这部分代码实现com.google.android.gles_jni包中的各个类,通过继承实现标准类javax.microedition.khronos.opengles中的类。 5、opengl和android系统结合的类的代码路径为: frameworks\base\opengl\java\android\opengl 其中主要的类通过调用com.google.android.gles_jni包中的类和android基础GUI系统的类,主要功能是实现GLSurfaceView.   二、Echair及之前的android中的OpenGL结构。 

1、OpenGL的实现库

OpenGL的实现库由android自带软件库libagl(基于软件算法)实现,或者由各个不同平台的硬件libhgl实现,libhgl一般需要调用OpenGL的驱动程序实现。其中libagl的路径为:framework\base\opengl\libs\libagl:生成libagl.so,OpenGL的软件实现库。

不过目前本机上安装的android中没有这个路径。

如果需要构建其他的OpenGL库,需要使用egl.cfg配置文件来进行配置,并制定所使用的OpenGL库的路径。

2、OpenGL的本地框架库

头文件路径:

frameworks\base\opengl\include\EGL

frameworks\base\opengl\include\GLES

frameworks\base\opengl\include\GLES2

本地库的lib路径

frameworks\base\opengl\libs\EGL   :生成库libEGL.so

frameworks\base\opengl\libs\GLES_CM    ---opengl es 1.x:生成库libGLESv1_CM.so

frameworks\base\opengl\libs\GLES2   ---opengl es 2.x:生成库libGLESv2.so

3、OpenGL的JNI部分

frameworks\base\core\jni\android_opengl_GLES10.cpp

frameworks\base\core\jni\android_opengl_GLES10Ext.cpp

frameworks\base\core\jni\android_opengl_GLES11.cpp

frameworks\base\core\jni\android_opengl_GLES11Ext.cpp

frameworks\base\core\jni\android_opengl_GLES20.cpp

这些文件提供了OpenGL不同版本的各个类的支持。

4、OpenGL的java接口API

标准opengl的类代码路径: frameworks\base\opengl\java\javax\microedition\khronos\egl frameworks\base\opengl\java\javax\microedition\khronos\opengles 这是标准的OpenGL类,主要的文件是GL10.java、GL10Ext.java、GL11.java、GL11Ext.java、GL.java、GL11ExtensionPack.java;在OpenGL ES中,主要的文件依然是EGL10.java。 android通过继承方式实现OpenGL标准的接口,代码路径为: frameworks\base\opengl\java\com\google\android\gles_jni 这部分代码实现com.google.android.gles_jni包中的各个类,通过继承实现标准类javax.microedition.khronos.opengles中的类。 5、opengl和android系统结合的类的代码路径为: frameworks\base\opengl\java\android\opengl 其中主要的类通过调用com.google.android.gles_jni包中的类和android基础GUI系统的类,主要功能是实现GLSurfaceView.   四、移植的内容 主要包括两个方面: 驱动程序:OpenGL硬件加速要与硬件交互,因此需要在linux内核中提供驱动程序来控制硬件。在linux中,opengl使用非标准的驱动程序接口。 硬件实现库:在用户空间的opengl的实现库。 在eclair及之后的android中,opengl的移植还需要改写egl.cfg文件进行不同实现库的配置。

更多相关文章

  1. 浅谈Java中Collections.sort对List排序的两种方法
  2. Pycharm安装PyQt5的详细教程
  3. python list.sort()根据多个关键字排序的方法实现
  4. Android(安卓)中 drawTextOnPath 文字效果演示(中级)
  5. 利用html5开发android(转载)
  6. Android命令行启动程序-am命令的使用-纠正网上大部分资料的错误
  7. textview中加链接
  8. Binder驱动的实现
  9. android存储路径问题

随机推荐

  1. json连接中央气象台api异常
  2. Android(安卓)获取麦克风音量
  3. 【Androidd Release】AndroidStudio 发布
  4. Android之USB Camera摄像头节点后移
  5. 如何实现Android(安卓)布局背景模糊化处
  6. Android(安卓)图文数据JSON解析,金山词霸
  7. Android逆向工程初步(一) 15.4.24
  8. Android(安卓)user defined service hand
  9. Android(安卓)Retrofit 2.0 注解的理解
  10. Android(安卓)中文API (94) ―― MediaCont