-
Shader
生成测试yuv数据和pcm数据命令:
ffmpeg -i test.mp4 -f si6le test.pcm
ffmpeg -i 720.mp4 -pix_fmt yuv20p -s 424x240 out.yuv
具体显示yuv数据 --- 着色器语言 GLSL (运行在显卡上,不消耗cpu)
-GLSL的基本语法与C语言基本相同
-它完美支持向量和矩阵操作
-GLSL提供了大量的内置函数来提供丰富的扩展功能
-它是通过限定符操作来管理输入输出类型的
①顶点着色器:顶点着色器被使用在传统的基于顶点的操作,例如位移矩阵、计算光照方程、产生贴图坐标。顶点着色器被应用指定,应用于客户的顶点转化是针对每个顶点执行一次,用于确定顶点位置
作用:顶点坐标输出成材质坐标
②片元着色器:在片元着色器阶段只有唯一的varying 输出变量-即内建变量:gl_FragColo
是针对每个片元(可以理解为每个像素)执行一次,用于确定每个片元(像素)的颜色
作用:输出像素格式
- 顶点信息
float *vertexData = new float[12]{
1.0f, -1.0f, 0.0f,
-1.0f, -1.0f, 0.0f,
1.0f, 1.0f, 0.0f,
-1.0f, 1.0f, 0.0f};
// 顶点着色器 glsl代码
static const char *vertexShader = GET_STR(
attribute
vec4 aPosition; //顶点坐标
attribute
vec2 aTexCoord; //材质顶点坐标
varying
vec2 vTexCoord; //输出的材质坐标
void main() {
vTexCoord = vec2(aTexCoord.x, 1.0 - aTexCoord.y);
gl_Position = aPosition;
}
);
- 材质坐标
float *textureVertexData = new float[8]{
1.0f, 0.0f,//