Android如何加载硬件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 。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android中使用OpenGL ES 3.0加载纹理有以下步骤: 1. 初始化OpenGL ES环境:在OpenGL ES操作前,需要初始化OpenGL ES环境,创建GLSurfaceView实例,并设置渲染器。 2. 创建纹理对象:使用OpenGL ES函数glGenTextures生成纹理对象ID,并绑定到当前活动的纹理单元。 3. 加载纹理图像:通过Android的Bitmap对象加载纹理图像,可以使用BitmapFactory类的decodeResource方法从资源中加载或使用Bitmap类的createBitmap方法动态创建。调用glTexImage2D将图像数据传输到纹理对象中。 4. 设置纹理过滤器:可以使用glTexParameteri函数设置纹理的放大缩小过滤器,如GL_LINEAR或GL_NEAREST。 5. 设置纹理包裹模式:可以使用glTexParameteri函数设置纹理的包裹模式,如GL_CLAMP_TO_EDGE或GL_REPEAT。 6. 加载纹理坐标:通过定义纹理坐标数组,确定纹理映射到对象的哪个部分。在顶点着色器中使用纹理坐标进行纹理采样。 7. 绘制纹理:在绘制OpenGL场景时,通过在顶点着色器和片段着色器中使用纹理坐标,并利用纹理采样器将纹理应用到对象上。 8. 释放纹理资源:当纹理不再使用时,需要调用glDeleteTextures函数释放纹理对象。 总之,使用OpenGL ES 3.0加载纹理需要创建纹理对象、加载纹理图像、设置纹理过滤器与包裹模式、加载纹理坐标,并在绘制时通过纹理采样器将纹理应用到对象上。记得释放纹理资源,以避免内存泄漏。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值