当前位置: 首页 > news >正文

OpenGL-ES 学习(9) ---- OpenGL-ES 简介和基本 Pipeline

目录

      • OpenGL-ES 简介
      • 渲染管线
        • 顶点和顶点着色器
        • 图元装配和光栅化
        • 片段和片段着色器
        • 逐片段操作
        • EGL

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 渲染管线.png

顶点和顶点着色器

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

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

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

Vertex Shader 流程框图:
VertexShader.png

图元装配和光栅化

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

片段和片段着色器

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

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

Pixelshader 流程框图:
PixelShader.png

逐片段操作

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

EGL

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

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

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

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

相关文章:

  • 专题二十一:无线局域网——WLAN
  • Python地图绘制模块cartopy入门
  • Java学习手册:Spring 数据访问
  • PostgreSQL数据类型
  • 面试中系统化地解答系统设计题:通用方法论
  • 向量数据库和关系型数据库的区别,优点,缺点和典型应用场景
  • Linux安全清理删除目录bash脚本
  • 从零到一构建数据科学全流程实战:最新技术与企业级开发
  • Python:Python3 异常和文件
  • Rerank详解
  • 【CF】Day48——Codeforces Round 979 (Div. 2) D
  • 数字智慧方案5981丨智慧农业解决方案(55页PPT)(文末有下载方式)
  • 2024年12月 C/C++(二级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • 开始一个vue项目
  • Android 移动开发:ProgressBar (水平进度条)
  • 第十一届蓝桥杯 2020 C/C++组 门牌制作
  • DeepSeek V3 架构创新:大规模MoE与辅助损失移除
  • Java面试高频问题(31-33)
  • PDF24 Tools:涵盖20+种PDF工具,简单高效PDF工具箱,支持一键编辑/转换/合并
  • 【论文阅读26】贝叶斯-滑坡预测-不确定性
  • 一周文化讲座|那些年的年青人
  • 《大风杀》上海首映,白客说拍这戏是从影以来的最大挑战
  • 特朗普称加总理将很快访美,白宫:不影响将加拿大打造成“第51个州”计划
  • 上海:以税务支持鼓励探索更多的创新,助力企业出海
  • “铁血防守”制造8年最快丢球,恐惧中的阿森纳什么也做不了
  • 人民日报:在大有可为的时代大有作为