达内android培训,达内Android培训—EGL 1.0 学习笔记

本文详细介绍了Android平台上EGL的创建、销毁以及与OpenGLES的关系。EGL作为桥梁连接了OpenGLES和本地Window系统,负责创建渲染上下文和Surface。渲染上下文是OpenGLES的状态机,Surface则是绘制的画布。EGL支持window、pbuffer和pixmap三种Surface类型,以及backbuffered和singlebuffered两种渲染模式。同时,文章还列举了EGL的相关函数,如eglInitialize、eglTerminate等,以及配置参数如colorbuffer深度、multisamplebuffer等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我的“Android

OpenGLES 1.x 教程的Native实现”中有Android平台下EGL的创建、销毁的代*

基本概念

EGL是OpenGL ES与本地Window系统之间的桥梁。EGL创建渲染上下文(Rendering

Context)和Su***ce,Rendering Context是OpenGL ES的状态机,Su***ce是OpenGL

ES绘图的“画布”

Display

Display是OpenGL ES应用运行平台的物理显示器的抽象

Rendering Context

OpenGL ES状态机,由EGL创建、并与Su***ce关联

Rendering Context含有OpenGL ES的客户端和服务器端状态

Rendering Context存在于客户端的地址空间。每个线程在同一时刻只能使用1个Rendering

Context,每个Rendering Context在同一时刻只能被1个线程使用

Su***ce

OpenGL ES绘图的“画布”。EGL/OpenGL ES有3种Su***ce:

window - 用于屏上(onscreen)渲染

pbuffer - 用于离屏(offscreen)渲染

pixmap - 离屏渲染,但本地渲染API也可以访问

OpenGL支持2种渲染模式:

back buffered - 绘图的color buffer由EGL创建和管理,绘图完成后,EGL将后台color

buffer交换/拷贝到窗口上

single buffered - 其color buffer为本地Pixmap,EGL能使用但不维护。OpenGL

ES绘图后,像素直接在Su***ce上呈现

window和pbuffer Su***ce是back buffered模式,pixmap Su***ce是single

buffered模式

Config

用于创建Su***ce,包含了Su***ce的各个buffer的创建参数

color buffer

depth buffer

multisample buffer

stencil buffer

相互之间的关系概括

a4c26d1e5885305701be709a3d33442f.png

要点:

与同一Display关联的Rendering Context和Su***ce,才可以相互关联

一个Rendering Context可以向多个Su***ce绘图,多个Rendering

Context可以向同一个Su***ce绘图

每个Su***ce有其独立的buffers

EGL函数

Display相关

eglInitialize

对每一个Display,都要初始化EGL

eglTerminate

释放EGL相关资源

Config相关

Config用于创建Su***ce

eglChooseConfig

获取一个Display与指定属性相匹配的Config列表

eglGetConfigs

获取一个Display所支持的所有Config列表

常用Config属性有:

属性

说明

EGL_RED_SIZE

EGL_GREEN_SIZE

EGL_BLUE_SIZE

EGL_ALPHA_SIZE

color buffer的RGBA分量的颜色深度(位数)

EGL_BUFFER_SIZE

color buffer 的颜色深度(bpp)

EGL_RED/GREEN/BLUE/ALPHA_SIZE之和

EGL_SURFACE_TYPE

Su***ce类型,可选值为:

EGL_WINDOW_BIT

EGL_PIXMAP_BIT

EGL_PBUFFER_BIT

EGL_DEPTH_SIZE

depth buffer中Z的位数

EGL_SAMPLE_BUFFERS

multisample buffer个数,0或1

EGL_SAMPLES

number of samples per pixel

EGL_STENCIL_SIZE

stencil buffer个数

Su***ce相关

eglCreateWindowSu***ce

创建window Su***ce(on-screen 渲染)

eglDestroySu***ce

释放Su***ce相关资源

Context相关

eglCreateContext

指定Display、Config,创建一个Rendering Context

多个Rendering

Context可以共享数据,eglCreateContext()有一个参数为与其共享数据的另一个Context

eglDestroyContext

释放Context相关的资源

eglMakeCurrent

将Rendering Context绑定到当前线程,并且绑定Rendering Context与Su***ce

如果当前线程已经绑定了另一个Context,则原Context将解除绑定。因此可以以NULL或者EGL_NO_CONTEXT调用eglMakeCurrent来解除线程与当前Context之间的绑定关系

其他函数

eglSwapBuffers

将back buffer拷贝到窗口

eglGetError

获取最近一次EGL函数的错误代*

希望在达内学习Android的学员学习愉快!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值