我在着色器中将YUV(NV21)转换为RGB时,在Android编程中使用了OpenGL ES,例如:

vec3 yuv = vec3(
        (texture2D(u_TextureY, vTextureCoord).r - 0.0625),
        texture2D(u_TextureUV, vTextureCoord).a - 0.5,
        texture2D(u_TextureUV, vTextureCoord).r - 0.5
    );

然后我将得到与u_TextureYu_TextureUV分开的YUV数据。

我知道NV21格式如下:YYYYYY ... UVUV ...但是如何将YUYV422转换为RGB?
所以,我的问题是texture2D(u_TextureY, vTextureCoord).r和.a中的“r”和“a”是什么意思?那么我可以找到做YUYV422-> RGB的方法。

最佳答案

texture2D的返回类型为vec4。在GLSL中,可以分别访问向量的组成部分:

参见The OpenGL Shading Language specification:





这意味着.r给出了vec4的第一个组成部分,而.a给出了vec4的第4个组成部分。

关于android - texture2D()。r和texture2D()。a是什么意思?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47671934/

10-11 00:09