初识 OpenGL ES

2020-07-26  本文已影响0人  远方竹叶

简介

OpenGL ES (OpenGL for Embedded Systems)是以手持和嵌入式为⽬标的高级 3D 图形应用程序编程接口(API)。OpenGL ES 是目前智能手机中占据统治地位的图形 API。支持的平台: iOS,Andriod,BlackBerry,bada,Linux,Windows。其中安卓主要还是采用 OpenGL ES,而 iOS 在 iOS 12开始被废弃,但是仍然可用,官方主推 Metal,但是有很多应用还是基于 OpenGL ES 写的,还没那么快直接迁移至 Metal,就像 Swift 和 OC 一样。

Metal 的也是采取了 OpenGL ES 的思想和做法自己开发的一个图形接口集合,因为高度封装所以使用很方便,但是想要熟悉了解还得深入底层,那么了解和学习 OpenGL ES 是很有必要的,毕竟这也是 iOS12之前的做法。

渲染流程

OpenGL ES允许应用程序利用底层图形处理器的强大功能。iOS 设备上的 GPU 可以执⾏复杂的 2D 和 3D 绘图,以及最终图像中每个像素的复杂着⾊计算。

OpenGL ES 图形管道

顶点着色器

着色器程序是执行顶点操作的顶点着色器程序源代码/可执行文件。

接收方式

主要任务

  1. 计算矩形变换位置

  2. 根据光照公式计算颜色

  3. 生成/变换纹理,片元着色器是没有办法传入属性即attribute的,可以通过顶点着色器桥接,间接将纹理坐标属性传递到片元着色器

图元装配

根据图元类型和顶点数据计算生成一个个的图元,裁剪、透视分割和视口变换操作都是在这个阶段进行,之后进入光栅化阶段

光栅化

把装配后的图元(点、线、三角形等)转化成一组二维片段的过程(屏幕是 2D 的)。二维片段有屏幕坐标、颜色属性、纹理坐标等数据。

片元着色器

接收方式

主要任务

  1. 计算颜色
  2. 获取纹理值
  3. 往像素中填充颜色值【纹理值/颜色值】

它可以用于图片/视频/图形中每个像素的颜色填充(比如给视频添加滤镜,实际上就是将视频中每个图片的像素点颜色填充进⾏修改)。

顶点着色器、片元着色器都是代码段,类似于iOS中的函数/方法,有返回值。顶点着色器的返回值会被复制给 gl_Position,片元着色器的结果会赋值给 gl_fragColor。这两个返回值都属于 GLSL中 的内建变量,是封装好的,直接将数据赋值给它即可。

EGL(Embedded Graphics Library)

上一篇 下一篇

猜你喜欢

热点阅读