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. android存储路径问题
  2. Android之——代码混淆
  3. Android源代码下载指南(图解)
  4. Android系统进程Zygote启动过程的源代码分析
  5. Android布局--相对布局,RTL,用代码实现布局
  6. Android:高效的Android代码编写
  7. webkit framework for android 4.0.3 代码总结

随机推荐

  1. 浅谈PHP连接MySQL数据库的三种方式
  2. PHP常用日期时间操作合集
  3. PHP开发者如何做好密码保护以及Laravel底
  4. PHP生成图形验证码(加强干扰型)
  5. php中怎么让json_encode不自动转义斜杠“
  6. 用PHP代码实现简单的工厂模式
  7. php中=、==和===的区别介绍
  8. API常用签名验证方法(PHP实现)
  9. php中&&的含义及用法介绍
  10. php中$this的用法介绍