什么是OpenGL ES
OpenGL ES(OpenGL for Embedded Systems)是以手持和嵌⼊式设备为⽬标的⾼级 3D 图形应⽤程序编程接口(API)。 OpenGL ES 是目前智能手机中占据统治地位的图形 API。支持的平台包括:iOS,Andriod,BlackBerry,bada,Linux 和 Windows,它还是基于浏览器的 3D 图形 Web 标准WebGL 的基础。
OpenGL ES 是 OpenGL 的简化版本,它消除了冗余功能,提供了一个既易于学习又更易于在移动图形硬件中实现的库。OpenGL ES允许应⽤程序利⽤底层图形处理器的强大功能。iOS 设备上的 GPU 可以执行复杂的 2D 和 3D 绘图,以及最终图像中每个像素的复杂着色计算。
image.png简单的来说,OpenGL ES 和 OpenGL 学习起来大致一样,有很多重复的知识点。整个渲染管线流程如上图,可编程管线中,我们只能操作 顶点着色器 和 片元着色器。
1、顶点着色器
(1)顶点着色器的输入输出:
顶点着色器 实现了顶点操作的通用可编程方法。
顶点着色器 的 输入 包括:
着色器程序 —— 描述顶点上执⾏操作的顶点着色器程序源代码(GLSL代码)或者可执行⽂文件。
顶点着色器输入(或者属性Attributes)—— 用顶点数组提供的每个顶点的数据。
统一变量(uniform)—— 顶点(或者片段)着色器使用的不变数据(例如旋转矩阵)。
采样器—— 代表顶点着色器使用纹理的特殊统一变量类型。
如下图所示
image.png2) 顶点着色器的业务:
1、通过矩阵变换位置
2、计算光照公式生成逐顶点颜色
3、生成或变换纹理坐标
此外,因为顶点着色器由应用程序规定,所以它可以用于执行自定义计算,实施新的变换、照明或者较传统的固定功能管线所不允许的基于顶点的效果。
2、片元(片段)着色器
1)片元着色器的输入输出:
片元/⽚段着色器 的 输入 包括:
着色器程序 —— 描述⽚段上执⾏操作的片元着⾊器程序源代码/可执行⽂件。
输入变量—— 光栅化单元用插值为每个片段生成的顶点着⾊器输出。
统一变量(uniform)—— 顶点(或者片段)着色器使用的不变数据。
采样器 —— 代表⽚元着色器使⽤纹理的特殊统一变量类型。
如下图所示:
image.png
网友评论