初探OpenGLES
2020-07-27 本文已影响0人
CrazySnow
什么是OpenGL ES
- OpenGL ES是是针对嵌入式设备及移动终端设备的高级3D图形应用程序
- OpenGL ES 是跨平台的,不会提供窗口相关方法,需要系统各自提供载体
OpenGL ES 渲染流程

OpenGLES3.0图形管线

API获得顶点数据,将顶点数据从内存中拷贝至顶点缓冲区,拿到数据之后,通过attribute通道传递至顶点着色器,同时,纹理坐标通过Texture通道传递到顶点着色器和片元着色器
图元装配:即图元的连接方式,一共有9种,常用的有6种,此步骤将顶点变换为图形
片元/片段/像素着色器:处理对应像素点的颜色值,将处理好的每个像素点的颜色值存储到帧缓存区,然后在显示器中显示
定点着色器

输入方式:
- 由顶点着色器桥接传递过来的纹理坐标等
- 通过uniform通道输入统一变量,即顶点/片元着色器中使用的不变的数据
- 采样器:表示顶点着色器使用纹理的特殊统一变量类型,例如纹理就是通过采样器传递
输出
- gl_Position,是GLSL 的内建变量,是将处理后的最终顶点数据赋值给它
- gl_PointSize,是指点的尺寸,即可以在顶点着色器中修改每个点的大小,使用率较低
业务场景 - 矩阵变换位置
- 计算光照公式生成逐顶点颜色(也可以片元着色器)
- 生成/变换纹理坐标:片元着色器是没有办法传入属性即attribute的,可以通过顶点着色器桥接,间接将纹理坐标属性传递到片元着色器
片元着色器
输入方式:
- 由顶点着色器桥接传递过来的纹理坐标等
- 通过uniform通道输入统一变量,即顶点/片元着色器中使用的不变的数据
- 采样器:表示顶点着色器使用纹理的特殊统一变量类型,例如纹理就是通过采样器传递
输出
- gl_Position:顶点着色器中某一个顶点经过一系列处理后得到的结果
- gl_fragColor:经过片元着色器对某一个像素点来进行处理之后的结果
片元着色器业务
- 计算颜色
- 获取纹理值
- 往像素点中填充颜色值(纹理值/颜色值)