android egl使用方法,Android EGL

部分内容摘自其他博客,请见最下[参考资料]

首先来看看Android官方对EGL的解释:

OpenGL ES 定义了一个渲染图形的 API,但没有定义窗口系统。为了让 GLES 能够适合各种平台,GLES 将与知道如何通过操作系统创建和访问窗口的库结合使用。用于 Android 的库称为 EGL。如果要绘制纹理多边形,应使用 GLES 调用;如果要在屏幕上进行渲染,应使用 EGL 调用。

OpenGL ES 是Android绘图API,但OpenGL ES是平台通用的,在特定设备上使用需要一个中间层做适配,这个中间层就是EGL。

95dfe935b169

EGL架构

Display(EGLDisplay) 是对实际显示设备的抽象。

Surface(EGLSurface)是对用来存储图像的内存区域 FrameBuffer 的抽象,包括 Color Buffer, Stencil Buffer ,Depth Buffer。

Context (EGLContext) 存储 OpenGL ES绘图的一些状态信息。

Android中的OpenGL 与EGL

Android 2.0版本之后图形系统的底层渲染均由OpenGL负责,OpenGL除了负责处理3D API调用,还需负责管理显示内存及处理Android SurfaceFlinger或上层应用对其发出的2D API调用请求。

本地代码:

frameworks/native/opengl/libs/EGL

Android EGL框架,负责加载OpenGL函数库和EGL本地实现。

frameworks/native/opengl/libagl

Android提供的OpenGL软件库

JNI代码:

frameworks/base/core/jni/com_google_android_gles_jni_EGLImpl.cpp

EGL本地代码的JNI调用接口

frameworks/base/core/jni/com_google_android_gles_jni_GLImpl.cpp

frameworks/base/core/jni/android_opengl_GLESXXX.cpp

OpenGL功能函数的JNI调用接口

Java代码:

frameworks/base/opengl/java/javax/microedition/khronos/egl

frameworks/base/opengl/java/javax/microedition/khronos/opengles

frameworks/base/opengl/java/com/google/android/gles_jni/

frameworks/base/opengl/java/android/opengl

EGL和OpenGL的Java层接口,提供给应用开发者,通过JNI方式调用底层函数。

首先从Native代码入手: frameworks/native/opengl/libs/EGL,该目录下文件如图所示࿱

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值