美文网首页
OpenGL-ES 学习(1)---- OpenGL-ES 简介

OpenGL-ES 学习(1)---- OpenGL-ES 简介

作者: 特立独行的佩奇 | 来源:发表于2022-01-08 14:47 被阅读0次

    OpenGL-ES 简介

    OpenGL-ES(OpenGL for Embedded System)是以手持和嵌入式设备为目标的高级3D图形应用编程接口,OpenGL ES 支持的的平台包括 IOS,Android,BlackBerry,bada,Linux 和 windows,它还是基于浏览器的3D图形Web标准WebGL的基础,OpenGL-ES 标准由khronos 公司发布。
    OpenGL-ES 的标准变迁如下:

    OpenGL-ES 版本 简介
    1.0 固定管线
    1.1 固定管线
    2.0 开始支持可编程管线
    3.0 从OpenGL 3.3 标准演化而来

    OpenGL-ES 的渲染管线

    OpenGL-ES 的渲染管线如下:


    OpenGL-ES 渲染管线.png

    本文中
    顶点着色器 = Vertex shader
    片段着色器 = Pixel shader

    顶点和顶点着色器

    顶点和顶点着色器(Vertex & Vertex shader),shader 是指运行在GPU可编程管线上的程序,也就是GPU所用的编程语言,本质是一种类C语言。
    Vertex shader 的内容包含:

    • shader程序
    • shader 的输入属性,就是顶点数组提供的各个顶点的属性
    • uniform(统一变量) Vertex/Pixel shader 使用的不变的变量
    • 采样器

    在图元光栅化阶段,为每个生成的片段计算 vertex shader 的输出值,并作为输入值传递给pixel shader,
    用于分配给每个图元顶点的Vertex shader输出每个片段值得机制被称为插值

    Vertex shader 流程框图:


    VertexShader.png
    图元装配和光栅化

    图元就是基本的图形对象比如三角形,图元的每个顶点被发送到每个Vertex Shader 的不同拷贝,在裁剪之后,被转换为屏幕坐标
    光栅化是将图元转换为一组二维片段的过程,此后这些片段就会交给Pixel shader 处理,这些二维片段表示屏幕上可以绘制的像素。

    片段和片段着色器

    片段着色器(Pixel shader/Fragment shader)为片段操作实现了通用的可编程方法,它的组成如下:

    • Shader 程序
    • 输入变量 光栅化阶段用插值为每个片段生成的 Vertex shader 输出
    • 输出变量
    • 采样器

    Pixelshader 流程框图:


    PixelShader.png
    逐片段操作

    OpenGL-ES 逐片段的操作流程如下:


    逐片段操作.png
    EGL

    OpenGL-ES 命令需要存储渲染上下文的状态和绘制表面的支持

    • 渲染上下文存储相关的OpenGL-ES 状态
    • 绘制表面是用于绘制图元的表面,它指定渲染所需的缓冲区类型,比如颜色缓冲区,深度缓冲区和模板缓冲区,绘制表面还需要指定所需缓冲区的位深度

    因为OpenGL-ES 没有提及如何常见渲染上下文,或者渲染上下文如何连接到原生窗口系统,EGL就是 khronos 提出的OpenGL-ES 和原生窗口系统之间的接口;
    EGL的功能如下:

    • 查询并初始化设备显示商的可用显示设备
    • 创建渲染表面
      EGL创建的表面可用分为屏幕上的表面和屏幕外的表面,屏幕上的表面连接到原生窗口系统,屏幕外的表面不显示但是用作渲染表面的像素缓冲区
    • 创建渲染上下文
      EGL 的最新版本时 EGL v1.4
    OpenGL-ES 3.0 API查询网站

    https://www.khronos.org/registry/OpenGL-Refpages/es3.0/

    相关文章

      网友评论

          本文标题:OpenGL-ES 学习(1)---- OpenGL-ES 简介

          本文链接:https://www.haomeiwen.com/subject/fnpecrtx.html