表面纹理的亮度“y”值

对于我的openglvideo播放器应用程序,我使用绑定到GL_TEXTURE_EXTERNAL_OES的表面纹理

来源: https : //github.com/crossle/MediaPlayerSurface/blob/master/src/me/crossle/demo/surfacetexture/VideoSurfaceView.java

在我的片段着色器中,我希望为3×3的区块拍摄亮度值。

vec2 tex00 = vec2(vTextureCoord.x-xmargin, vTextureCoord.y-ymargin) vec4 p00 = texture2D(sTexture, tex00) ... etc for 3x3 

然后通过用(0.3,0.59,0.11)的vec3做p00.rgb的点来计算每个纹素的亮度:即:p00。

相反,有可能直接使用p00.y? 它会给亮度值吗?

不,不会的 在GLSL向量中有三组混合口罩: xyzwrgbastpq 。 隐含的语义(坐标,颜色和纹理坐标)仅用于帮助开发人员。 他们都访问同一组数据。

p00.yp00.gp00.t都将返回相同的值,在这种情况下是texel的绿色部分。