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

我的“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的学员学习愉快!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值