OpenGL显示yuyv422格式图像
下面介绍OpenGL显示yuyv422格式图片,如何处理顶点着色器、片元着色器,计算系数,添加纹理。
顶点着色器
#version 330 core
uniform float xScal;
uniform mat4 transLation;
layout (location = 0) in vec3 aPos;// 位置变量的属性位置值为 0
layout (location = 1) in vec2 aTexCoord;// 颜色变量的属性位置值为 1
out vec2 textureOut;
void main(void)
{
gl_Position = transLation * vec4(aPos.x * xScal, aPos.y * xScal, aPos.z, 1.0);
textureOut = aTexCoord;
}
片元着色器
#version 330 core
uniform sampler2D tex_yuv_rg;
uniform sampler2D tex_yuv_rgba;
uniform mat3 cspmat;
uniform vec3 cspconst;
in vec2 textureOut;
void main(void)
{
vec3 rgb;
vec3 yuv;
yuv.r = texture2D(tex_yuv_rg, textureOut).r;
yuv.g = texture2D(tex_yuv_rgba, textureOut).g;
yuv.b = texture2D(tex_yuv_rgba, textureOut).a;
rgb = yuv*cspmat+cspconst;
gl_FragColor=vec4(rgb,1.0);
}
添加纹理
glGenVertexArrays(1, &VAO);
glGenBuffers(1, &VBO);
glBindVertexArray(VAO);
glBindBuffer(GL_ARRAY_BUFFER, VBO);
glBufferData(GL_ARRAY_BUFFER,