GLSL = OpenGl Shader Language,着色器语言,转载GL Shader Language(GLSL)详解-基础语法 - 知乎。
文档查询:docs.gl 百科查询:glTexCoord2f_百度百科
扩展查询:registry.khronos.org:/OpenGL/extensions/
模型/mesh网格- 模型可以分割为成多个三角形,gpu只能画三角形。三个点可以确定一个平面,计算效率高。三角形光栅化为一个个的像素点。
顶点着色器(Vertex) - gl_Position确定三角形的点的坐标和形状
片元着色器(Fragment)- gl_FragColor对每个像素点进行填色、贴图(纹理)
矩阵(Mat)- 融合计算(旋转、平移、变换),计算一次,所有的点都只需要和该矩阵结果乘即可,减少计算次数提高效率。gl_Position 是一个四维向量vec4(齐次坐标,方便旋转平移缩放)。MVP矩阵。
摄像头坐标系 - lookat实现相机移动,想象人站立右手指向x 头顶指向y 后背指向z;
精度(float、int)- 高中低分别为highp、mediump、lowp。顶点着色器已经默认指定了高精度highp;片元着色器中未指定浮点精度,可以通过以下方法指定,一般直接使用precision mediump float;减少资源消耗。
#ifdef GL_ES // 是否是ES环境
#ifdef GL_FRAGMENT_PRECISION_HIGH // 为1则表示支持片源着色器高精度
precision highp float;
#else
precision mediump float;
#endif
#endif
void main(){
}
离屏渲染 - makecurrent绑定EGL环境到当前线程,surface可以自行创建用来创建纹理,渲染的时候surface从surfaceview或surfaceTexture拿,参考GPUImage链式滤镜、多滤镜处理逻辑
、webrtc;共享上下文可以使A线程绘制的纹理在B线程也可以使用,以此优化提高绘制效率。