android opengl流程,【Android OpenGL ES】Android Opengl ES创建流程
在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创建流程相关推荐
- Android系统(245)---SystemServer进程的创建流程
Android进程系列第三篇---SystemServer进程的创建流程 一.内容预览 SystemServer进程的启动.png 二.概述 前面进程系列已经更新了两篇,本文(基于Android O源 ...
- camunda流程定义表无数据_创建流程实例时 act_ru_identitylink 表中没有出现相关的人员数据...
老师您好,我对流程实例有两个问题: 创建流程实例的方法,视频中给出的是 ProcessInstance processInstance = runtimeService.startProcessIns ...
- Android OpenGL+Camera2渲染(2) —— OpenGL实现Camera2图像预览
Android OpenGL+Camera2渲染(1) -- OpenGL简单介绍 Android OpenGL+Camera2渲染(2) -- OpenGL实现Camera2图像预览 Android ...
- Android系统启动流程—— init进程zygote进程SystemServer进程启动流程
原文地址:https://blog.csdn.net/qq_30993595/article/details/82714409 Android系统启动流程 Android系统启动过程往细了说可以分为5 ...
- 【OpenGL ES】OpenGL ES简介
[参考-khronos]https://www.khronos.org/opengles/ 1.简介 OpenGL ES(OpenGL for Embeded System)是OpenGL(Open ...
- [OpenGL ES 02]OpenGL ES渲染管线与着色器
http://blog.csdn.net/kesalin/article/details/8223649 罗朝辉 (http://blog.csdn.net/kesalin) 本文遵循"署名 ...
- 适用于Android的OpenSL ES指南-OpenSL ES的Android扩展
翻译自Android Extensions 针对Android的OpenSL ES扩展了参考OpenSL ES规范,使其与Android兼容,并利用Android平台的强大功能和灵活性. Androi ...
- 【Android 逆向】整体加固脱壳 ( DexClassLoader 加载 dex 流程分析 | RawDexFile.cpp 分析 | dvmRawDexFileOpen函数读取 DEX 文件 )
文章目录 前言 一.RawDexFile.cpp 中 dvmRawDexFileOpen() 方法分析 前言 上一篇博客 [Android 逆向]整体加固脱壳 ( DexClassLoader 加载 ...
- 【Android 逆向】整体加固脱壳 ( DexClassLoader 加载 dex 流程分析 | 查找 DexFile 对应的C代码 | dalvik_system_DexFile.cpp 分析 )
文章目录 前言 一.查找 DexFile 对应的 C++ 代码 1.根据 Native 文件命名惯例查找 C++ 代码 2.根据方法名查找 二.dalvik_system_DexFile.cpp 源码 ...
最新文章
- Halcon与QT的联合编程(2)
- 神经网络学习中的SoftMax与交叉熵
- windows 2003下snort安装
- c/c++使用gsoap发布和调用webservice
- YUMI~~强大的USB启动盘制作工具!!
- selenium+python面试题目总结,完整度80%,看看你会多少?
- Emule使用Upnp,解决Lowid和port not reachable的问题
- centos升级之共享文件夹
- Python try/except/finally等
- 基于FPGA的图像处理(一)--System Generator介绍
- 三、服务器和客户端的信息函数
- 3月19日学习内容整理:redis
- 网站开发流程以及HTML5简介(七)
- 洛谷——P1876 开灯
- android手机网络Ping测试
- 半导体物理学——(四)半导体的导电性
- 小猿日记 - 程序猿的日常日记(2)
- 构建数据平台探索智能应用,做企业数字化升级的得力助手
- 服务器显示doorstall,杀戮空间2服务器插件AdminCmdsV2.0.6设置说明
- CREATE PROCEDURE