OpenGL ES 是用于可视化的二维和三维数据,它是一个多功能开发过标准图形库,支持2D和3D数字内容创建,机械和建筑设计,虚拟原型设计,飞行模拟,视频游戏等应用程序。我们可以使用OpenGL配置的3D图形管道向其提供数据。OpenGL ES是OpenGL的简化版本,它消除了冗余的功能,提供了一个易于学习和在移动图形硬件中实现的库。OpenGL ES允许应用程序利用底层图形处理器的强大功能。iOS设备上的GPU可以执行复杂的2D和3D绘图,以及最终图像中每个像素的复杂着色计算。
OpenGL ES 图形管道
OpenGL ES 常见概念
顶点着色器
顶点着色器常用于处理顶点相关的数据业务,如矩阵变换位置,计算光照生成低逐点颜色,生成或变换纹理坐标等。
attribute vec4 position;
attribute vec2 textCoordinate; uniform mat4 rotateMatrix; varying lowp vec2 varyTextCoord; void main()
{
varyTextCoord = textCoordinate; vec4 vPos = position;
vPos = vPos * rotateMatrix; gl_Position = vPos;
}
图元装配
顶点着色器处理之后,下一个阶段就是图元装配(将顶点数据计算成一个个图元) ,在这个阶段会执行裁剪,透视分割和视口变换操作。图元类型和顶点索引确定将被渲染的单独图元。其主要作用是将顶点着色器输出值执行裁剪、透视分割、视⼝变换后进入光栅化阶段。
光栅化
光栅化就是将图元转化成一组二维片段的过程,而这些转化的片元将由片元着色器进行处理。
片元着色器
片元着色器主要用于计算颜色,获取纹理值,向像素点中填充颜色值或纹理值。
varying lowp vec2 varyTextCoord; uniform sampler2D colorMap; void main()
{
gl_FragColor = texture2D(colorMap, varyTextCoord);
}