android 中的 openGL引擎的移植
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文件进行不同实现库的配置。更多相关文章
- android存储路径问题
- Android之——代码混淆
- Android源代码下载指南(图解)
- Android系统进程Zygote启动过程的源代码分析
- Android布局--相对布局,RTL,用代码实现布局
- Android:高效的Android代码编写
- webkit framework for android 4.0.3 代码总结