在android 1.0rc2

sdk中,提供了以下包支持Opengl ES 编程:

一、openglES包

android.opengl

Class:

GLDebugHelper:用于调试OpenGL ES程序的帮助类

GLU:提供GL 公共工具功能的类

GLUtils:连接OpenGL ES和Android

API的工具类,其中提供了纹理图片的操作。

Matrix:矩阵运算工具类

Exception:

GLException:OpenGL异常类

javax.microedition.khronos.egl

Interface:

EGL:GL的配置接口

EGL10:GL1.0的配置接口

EGL11:GL1.1的配置接口

Classes:

EGLConfig:GL配置的类

EGLContext:GL运行环境的类

EGLDisplay:GL显示窗口的类

EGLSurface:可渲染GL的视图类

javax.microedition.khronos.opengles

Interfaces:

GL:Opengles的接口

GL10:Opengles1.0的接口

GL10Ext:Opengles1.0的扩展接口

GL11:Opengles1.1的接口

GL11Ext:Opengles1.1的扩展接口

GLExtentsionPack:Opengles的扩展接口

EGLDisplay:GL显示窗口的类

EGLSurface:可渲染GL的视图类

二、通常创建流程:

a)创建一个EGL实例

EGL10 mEgl =

(EGL10) EGLContext.getEGL();

b)创建一个EGLDisplay实例

EGLDisplay

mEglDisplay = mEgl.eglGetDisplay(EGL10.EGL_DEFAULT_DISPLAY);

c)初始化EGLDisplay

mEgl.eglInitialize(mEglDisplay,

version);

d)选择Config

mEgl.eglChooseConfig(mEglDisplay,

configSpec, configs, 1, num_config);

EGLConfig

mEglConfig = configs[0];

e)创建opengl运行环境

EGLContext

mEglContext =

mEgl.eglCreateContext( mEglDisplay,

mEglConfig,

EGL10.EGL_NO_CONTEXT,

null);

f)

创建新surface

mEglSurface =

mEgl.eglCreateWindowSurface(mEglDisplay,

mEglConfig,

holder, null);

g)

将opengles环境设置为当前

mEgl.eglMakeCurrent(mEglDisplay,

mEglSurface, mEglSurface,

mEglContext);

h)

获取当前opengles画布

GL gl =

mEglContext.getGL();

i)

显示绘制结果到屏幕上

mEgl.eglSwapBuffers(mEglDisplay,

mEglSurface);

三、示例Cube分析

这里简要分析下

google提供的示例代码APIDemos中的Cube的运行结构,具体代码就不详细列出了。

静态类关系图:

对象协作图:

首先,由GLSurfaceViewActivity的实例在onCreate函数中,创建一个GLSurfaceView实例用于显示绘制OpenglES;

其次,创建一个CubeRenderer的实例,用于渲染Cube对象;

然后,使用GLSurfaceView的setRenderer方法,创建一个GLThread实例。CLThread实例创建一个EglHelper实例初始化opengle环境,并且在run函数中循环运行CubeRender的drawFrame方法;

最后,使用setContentView方法,将GLSurfaceView的实例添加到显示窗口。

特别需要注意多线程同步问题,由于绘制是由绘制线程处理的,所以当主进程在调用surfaceCreated,surfaceDestroyed,onPause,onResume,onWindowFocusChanged,

onWindowResize,requestExitAndWait,queueEvent,getEvent时,

都会访问绘制线程,所以这些方法需要使用同步关键字synchronized锁定绘制线程,主线程必需要等待绘制线程执行完相应的方法后,在继续执行。

android opengl流程,【Android OpenGL ES】Android Opengl ES创建流程相关推荐

  1. Android系统(245)---SystemServer进程的创建流程

    Android进程系列第三篇---SystemServer进程的创建流程 一.内容预览 SystemServer进程的启动.png 二.概述 前面进程系列已经更新了两篇,本文(基于Android O源 ...

  2. camunda流程定义表无数据_创建流程实例时 act_ru_identitylink 表中没有出现相关的人员数据...

    老师您好,我对流程实例有两个问题: 创建流程实例的方法,视频中给出的是 ProcessInstance processInstance = runtimeService.startProcessIns ...

  3. Android OpenGL+Camera2渲染(2) —— OpenGL实现Camera2图像预览

    Android OpenGL+Camera2渲染(1) -- OpenGL简单介绍 Android OpenGL+Camera2渲染(2) -- OpenGL实现Camera2图像预览 Android ...

  4. Android系统启动流程—— init进程zygote进程SystemServer进程启动流程

    原文地址:https://blog.csdn.net/qq_30993595/article/details/82714409 Android系统启动流程 Android系统启动过程往细了说可以分为5 ...

  5. 【OpenGL ES】OpenGL ES简介

    [参考-khronos]https://www.khronos.org/opengles/ 1.简介 OpenGL ES(OpenGL for Embeded System)是OpenGL(Open ...

  6. [OpenGL ES 02]OpenGL ES渲染管线与着色器

    http://blog.csdn.net/kesalin/article/details/8223649 罗朝辉 (http://blog.csdn.net/kesalin) 本文遵循"署名 ...

  7. 适用于Android的OpenSL ES指南-OpenSL ES的Android扩展

    翻译自Android Extensions 针对Android的OpenSL ES扩展了参考OpenSL ES规范,使其与Android兼容,并利用Android平台的强大功能和灵活性. Androi ...

  8. 【Android 逆向】整体加固脱壳 ( DexClassLoader 加载 dex 流程分析 | RawDexFile.cpp 分析 | dvmRawDexFileOpen函数读取 DEX 文件 )

    文章目录 前言 一.RawDexFile.cpp 中 dvmRawDexFileOpen() 方法分析 前言 上一篇博客 [Android 逆向]整体加固脱壳 ( DexClassLoader 加载 ...

  9. 【Android 逆向】整体加固脱壳 ( DexClassLoader 加载 dex 流程分析 | 查找 DexFile 对应的C代码 | dalvik_system_DexFile.cpp 分析 )

    文章目录 前言 一.查找 DexFile 对应的 C++ 代码 1.根据 Native 文件命名惯例查找 C++ 代码 2.根据方法名查找 二.dalvik_system_DexFile.cpp 源码 ...

最新文章

  1. Halcon与QT的联合编程(2)
  2. 神经网络学习中的SoftMax与交叉熵
  3. windows 2003下snort安装
  4. c/c++使用gsoap发布和调用webservice
  5. YUMI~~强大的USB启动盘制作工具!!
  6. selenium+python面试题目总结,完整度80%,看看你会多少?
  7. Emule使用Upnp,解决Lowid和port not reachable的问题
  8. centos升级之共享文件夹
  9. Python try/except/finally等
  10. 基于FPGA的图像处理(一)--System Generator介绍
  11. 三、服务器和客户端的信息函数
  12. 3月19日学习内容整理:redis
  13. 网站开发流程以及HTML5简介(七)
  14. 洛谷——P1876 开灯
  15. android手机网络Ping测试
  16. 半导体物理学——(四)半导体的导电性
  17. 小猿日记 - 程序猿的日常日记(2)
  18. 构建数据平台探索智能应用,做企业数字化升级的得力助手
  19. 服务器显示doorstall,杀戮空间2服务器插件AdminCmdsV2.0.6设置说明
  20. CREATE PROCEDURE

热门文章

  1. 漂亮好看的小姐姐高颜值美女女神说:习惯是对缺点最好的包容
  2. MATLAB用矩阵创建大型矩阵以及创建RGB图像
  3. Python 进阶 之 知识点记忆
  4. 从失败中笑看数仓:探索构建数仓失败的原因
  5. postgresql后台查询删除与垃圾清理
  6. mDNS 原理的简单理解
  7. 拍摄VR全景这些硬件设备缺一不可!
  8. ssh去掉yes_ssh scp等消除每次问yes/no
  9. 微信小程序自定义checkbox样式
  10. 【C语言】C语言FILE详解