当前位置:   article > 正文

Android如何加载硬件OpenGLES库_opengles安卓依赖库

opengles安卓依赖库

注:文章部分引用自http://blog.csdn.net/andyhuabing/article/details/7176049

最近需要移植一个硬件的GPU 3D功能到Android系统里,哪么学习Android与OpenGLES的关系哪是必需的了,首先就是如何加载软/硬OpenGLES的库。

1:首先在没有加进硬件3D代码之前,Android默认使用的是软件OpenGLES API的库,也就是libGLES_android 。其中Android内部依赖以下三个库去加载管理OpenGLES API。

1):libEGL.so

EGL是用来管理绘图表面的(Drawing surfaces),并且提供了如下的机制
(1)与本地窗口系统进行通信
(2)查找绘图表面可用的类型和配置信息
(3)创建绘图表面
(4)同步OpenGL ES 2.0和其他的渲染API(Open VG、本地窗口系统的绘图命令等)
(5)管理渲染资源,比如材质

EGL 和 OpenGL ES API的联系
(1)通过解析OpenGL ES API函数库 libGLES_android.so来获取函数指针,进行调用。
(2)通过线程局部存储机制进行联系。

其实Android自身的libEGL并非真正的EGL API,libEGL具有加载管理OpenGLES库,并提供真正EGL库 API的封装。

例如libGLES_android.so里就有EGL API的真正实现:frameworks/base/opengl/libagl/egl.cpp。

而硬件3D的EGL API的实现通常单独编译成一个库,例如GPU Vivante厂商的EGL API库一般就命名为libEGL_VIVANTE.so 。

 

2):libGLESv1_CM.so,libGLESv2.soz

这两个库都是对OpenGLES API的封装,其中libGLESv1_CM.so是对OpenGLES1.0库的封装,libGLESV2.so是对OpenGLES2.0库的封装。这两个库封装的对像是OpenGLES API的实现,所以用软件OpenGLES的话,部分API的实现可以在libGLES_android.so中实现,当然在frameworks/base/opengl/libagl/目录下会有原码。而硬件OpenGLES的话,API的实现一般会编译成库,例如GPU Vivante厂商的OpenGLES1.0的API库一般就命名为libGLESv1_CM_VIVANTE.so,OpenGLES2.0的API库一般命名为libGLESv2_VIVANTE.so 。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/433518
推荐阅读
相关标签
  

闽ICP备14008679号