EGL

指定显示连接,默认连接为EGL_DEFAULT_DISPLAY

 EGLDisplay display = eglGetDisplay(EGL_DEFAULT_DISPLAY);

打开连接之后,需要初始化EGL
major 指定EGL实现返回的主版本号,可能为NULL
minor 指定EGL实现返回的次版本号,可能为NULL

 EGLint major, minor;if (!eglInitialize(display, &major, &minor)){return EGL_FALSE;}

初始化了EGL之后,就可以确定可用渲染表面的类型和配置
使用方法:

eglGetConfigs(EGLDisplay display, EGLConfig *configs,EGLint maxReturnCOnfigs,EGLint *numConfigs)

查询EGLConfig属性

eglGetConfigAttrib(EGLDisplay display, EGLConfig config, EGLint attribute, EGLint *value)

EGL选择配置:
configAttribs 指定configs匹配的属性列表
config 指定匹配列表
指定配置的大小
numConfigs 指定返回的配置大小

const EGLint configAttribs[] = {EGL_RENDERABLE_TYPE, EGL_WINDOW_BIT,EGL_RED_SIZE, 8,EGL_GREEN_SIZE, 8,EGL_BLUE_SIZE, 8,EGL_DEPTH_SIZE, 24,EGL_NONE};EGLConfig  config;EGLint numConfigs;if (!eglChooseConfig(display, configAttribs, &config, 1, &numConfigs)){return EGL_FALSE;}

创建屏幕上的渲染区域:EGL窗口
config 指定配置
window 指定原生窗口
attribList 指定窗口列表,可能为NULL

 EGLSurface window = eglCreateWindowSurface(display, config, nativeWindow, attribList );if (window == EGL_NO_SURFACE){return EGL_FALSE;}

创建一个渲染上下文
config 指定配置
contextAttribs 指定创建山西该文使用的属性列表;只有一个可接受的属性–EGL_CONTEXT_CLIENT_VERSION

   const EGLint contextAttribs[] = {EGL_CONTEXT_CLIENT_VERSION, 3,EGL_NONE};
EGLContext context = eglCreateContext(display, config, EGL_NO_CONTEXT, contextAttribs);if (context == EGL_NO_CONTEXT){return EGL_FALSE;}

EGL_NO_CONTEXT:没有共享,不允许多个EGL上下文共享特定类型的数据

指定某个EGLContext为当前上下文

 if (!eglMakeCurrent(display, window, window, context)){return EGL_FALSE;}

简单整合

#include "EGL/egl.h"static EGLBoolean initWindow(ANativeWindow* nativeWindow){const EGLint configAttribs[] = {EGL_RENDERABLE_TYPE, EGL_WINDOW_BIT,EGL_RED_SIZE, 8,EGL_GREEN_SIZE, 8,EGL_BLUE_SIZE, 8,EGL_DEPTH_SIZE, 24,EGL_NONE};const EGLint contextAttribs[] = {EGL_CONTEXT_CLIENT_VERSION, 3,EGL_NONE};EGLDisplay display = eglGetDisplay(EGL_DEFAULT_DISPLAY);if (display == EGL_NO_DISPLAY){return EGL_FALSE;}EGLint major, minor;if (!eglInitialize(display, &major, &minor)){return EGL_FALSE;}EGLConfig  config;EGLint numConfigs;if (!eglChooseConfig(display, configAttribs, &config, 1, &numConfigs)){return EGL_FALSE;}EGLSurface window = eglCreateWindowSurface(display, config, nativeWindow, NULL);if (window == EGL_NO_SURFACE){return EGL_FALSE;}EGLContext context = eglCreateContext(display, config, EGL_NO_CONTEXT, contextAttribs);if (context == EGL_NO_CONTEXT){return EGL_FALSE;}if (!eglMakeCurrent(display, window, window, context)){return EGL_FALSE;}return EGL_TRUE;
}

参考于《OpenGL es3.0编程指南》

Android EGL入门相关推荐

  1. 《Android 开发入门与实战(第二版)》——6.6节配置改变

    本节书摘来自异步社区<Android 开发入门与实战(第二版)>一书中的第6章,第6.6节配置改变,作者eoe移动开发者社区 组编 , 姚尚朗 , 靳岩,更多章节内容可以访问云栖社区&qu ...

  2. Android Volley入门到精通:初识Volley的基本用法

    1. Volley简介 我们平时在开发Android应用的时候不可避免地都需要用到网络技术,而多数情况下应用程序都会使用HTTP协议来发送和接收网络数据.Android系统中主要提供了两种方式来进行H ...

  3. android+studio入门指南+pdf,android+studio使用指南v0.1.pdf

    androidstudio使用指南v0.1 <Android Studio入门指南>作者:毕小朋 博客:/wirelessqa Android Studio入门指南v0.1 作者:毕小朋 ...

  4. Android编译系统入门(二)

    Android.mk的使用方法 在上一篇Android编译系统入门(一)中我们只要介绍了Android系统使用make命令默认编译的依赖树是droid,而droid是一个伪目标,它有两个先决条件dro ...

  5. 《Delphi XE6 android 编程入门教程》推荐

    近5.6年已经没有看见关于delphi的新技术的书出来了(看来在国内delphi的使用量确实很低了), 高勇同学最近出了一本<Delphi XE6 android 编程入门教程>,上周刚拿 ...

  6. android 编辑9图片,Android基础入门教程——1.6 .9(九妹)图片怎么玩

    Android基础入门教程--1.6 .9(九妹)图片怎么玩 Android基础入门教程 1.本节引言: 可能有的一些疑问: 1.什么是.9图片? 答:图片后缀名前有.9的图片,如pic1.9.png ...

  7. android开发入门_Android开发入门

    android开发入门 Android is an open source, Linux-based mobile operating system. Android was developed by ...

  8. android 菜鸟面单打印_1.0 Android基础入门教程

    本教程于2015年7月开始撰写,耗时半年,总共148节,涵盖了Android基础入门的大部分知识,由于当时能力局限,虽已竭尽全力,但对于一些问题的分析难免有所纰漏,敬请读者海涵!IT技术更新换代很快, ...

  9. Hello, Android 快速入门

    Hello, Android Android 开发与 Xamarin 简介 在这两节指南中,我们将 (使用 Xamarin Studio或 Visual Studio)建立我们的第一个 Xamarin ...

  10. Android 渗透测试学习手册 第一章 Android 安全入门

    第一章 Android 安全入门 作者:Aditya Gupta 译者:飞龙 协议:CC BY-NC-SA 4.0 Android 是当今最流行的智能手机操作系统之一. 随着人气的增加,它存在很多安全 ...

最新文章

  1. linux connect自动重连,Linux系统中使用sshfs挂载远程主机的目录到本地系
  2. Scala带返回值函数声明示例
  3. 非专业转行python的几点建议
  4. Java生鲜电商平台-深入理解微服务SpringCloud各个组件的关联与架构
  5. nginx mysql 查询系统_nginx/mysql查看内存占用
  6. java 反射泛型方法_java基础之反射和泛型以及注解
  7. android 保存联系人,保存android联系后获取联系人ID
  8. Java高并发编程详解系列-JVM类加载器
  9. java未知对象调用其某个方法_引用一个类的属性或调用其方法,必须以这个类的对象为前缀。...
  10. 如何设置STM8单片机选项字
  11. apache开源项目--nutch
  12. 2016年4月计算机网络原理,2015年4月04741计算机网络原理试题及答案
  13. Win11 恢复设置Win10任务栏、快速启动栏及右键菜单(Win11 22000.100版本测试通过)
  14. windows无法启动计算机上,windows无法启动解决方法汇总
  15. 洛谷P3717探测器解题报告
  16. java中重命名文件夹名,【Java】对文件或文件夹进行重命名
  17. PyTorch中 detach() 、detach_()和 data 的区别
  18. java 数字排列组合
  19. 微分方程(Differential Equation)
  20. Silvaco学习笔记(九)毕设相关

热门文章

  1. 应急通信于气象雷达的应用
  2. vue导航使用及页面布局样例
  3. 微信输入法,终于来了。。。
  4. Codeforces Round #469 (Div. 2) C、 Zebras
  5. 基于车辆运动学模型的LQR横向控制算法
  6. perfect forward secrecy
  7. 遍历文件夹将dicom文件转换为nifty文件
  8. 最短路径算法|Dijkstra‘s Algorithm
  9. 使用Scrapy(二)编写抓取规则
  10. Oracle日期类型转long类型