zoukankan      html  css  js  c++  java
  • EGL 1.0 学习笔记

    http://hi.baidu.com/leo_xxx/item/b01b1fc29abff355ac00ef5c

    基本概念

    EGL是OpenGL ES与本地Window系统之间的桥梁。EGL创建渲染上下文(Rendering Context)和Surface,Rendering Context是OpenGL ES的状态机,Surface是OpenGL ES绘图的“画布”

    Display

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

    Rendering Context

    OpenGL ES状态机,由EGL创建、并与Surface关联

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

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

    Surface

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

    • window - 用于屏上(onscreen)渲染
    • pbuffer - 用于离屏(offscreen)渲染
    • pixmap - 离屏渲染,但本地渲染API也可以访问

    OpenGL支持2种渲染模式:

    • back buffered - 绘图的color buffer由EGL创建和管理,绘图完成后,EGL将后台color buffer交换/拷贝到窗口上
    • single buffered - 其color buffer为本地Pixmap,EGL能使用但不维护。OpenGL ES绘图后,像素直接在Surface上呈现

    window和pbuffer Surface是back buffered模式,pixmap Surface是single buffered模式

    Config

    用于创建Surface,包含了Surface的各个buffer的创建参数

    • color buffer
    • depth buffer
    • multisample buffer
    • stencil buffer

    相互之间的关系概括

    要点:

    • 与同一Display关联的Rendering Context和Surface,才可以相互关联
    • 一个Rendering Context可以向多个Surface绘图,多个Rendering Context可以向同一个Surface绘图
    • 每个Surface有其独立的buffers

    EGL函数Display相关eglInitialize

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

    eglTerminate

    释放EGL相关资源

    Config相关

    Config用于创建Surface

    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

    Surface类型,可选值为:

    • EGL_WINDOW_BIT
    • EGL_PIXMAP_BIT
    • EGL_PBUFFER_BIT

    EGL_DEPTH_SIZEdepth buffer中Z的位数EGL_SAMPLE_BUFFERSmultisample buffer个数,0或1EGL_SAMPLESnumber of samples per pixelEGL_STENCIL_SIZEstencil buffer个数

    Surface相关eglCreateWindowSurface

    创建window Surface(on-screen 渲染)

    eglDestroySurface

    释放Surface相关资源

    Context相关eglCreateContext

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

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

    eglDestroyContext

    释放Context相关的资源

    eglMakeCurrent

    将Rendering Context绑定到当前线程,并且绑定Rendering Context与Surface

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

    其他函数eglSwapBuffers

    将back buffer拷贝到窗口

    eglGetError

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

  • 相关阅读:
    Vue中过度动画效果应用
    最小公倍数和最大公约数求解方法
    Vue实现双向绑定的原理以及响应式数据
    Hive SQL语法总结
    java安装配置
    Ubuntu vmware补丁
    centos6 安装tensorflow
    python hive
    python 连接 hive
    ubuntu下python通过cx_Oracle库访问oracle数据库
  • 原文地址:https://www.cnblogs.com/imlucky/p/3270554.html
Copyright © 2011-2022 走看看