프레임은 카메라에서 YUV420 형식 일 가능성이 가장 높습니다. 그렇지 않으면 조각 쉐이더를 사용하여 즉석에서 RGB로 변환 할 수있는 다른 수식을 찾을 수 있습니다.
#ifdef GL_ES
precision mediump float;
#endif
uniform sampler2D u_texturey;
uniform sampler2D u_textureu;
uniform sampler2D u_texturev;
varying vec2 v_texcoord;
varying vec4 v_colorout;
void main(void)
{
float y = texture2D(u_texturey, v_texcoord).r;
float u = texture2D(u_textureu, v_texcoord).r - 0.5;
float v = texture2D(u_texturev, v_texcoord).r - 0.5;
vec4 rgb = vec4(y + 1.403 * v,
y - 0.344 * u - 0.714 * v,
y + 1.770 * u,
1.0);
gl_FragColor = rgb * v_colorout;
}
YUV 그렇게 자신의 텍스처 유닛에 각각 업로드 3 개면에 와서 GPU가 나머지를한다 : 저는 여기에 현재 YUV420에 사용하는 프래그먼트 쉐이더입니다.
다른 개론을하면 질문하십시오.
편집 :
사용 GL_LUMINANCE 대신 자신의 평면 형식으로 텍스처 데이터의 각을 업로드 GL_RGBA.
프레임이 카메라에서 오는 경우 대개 YUV 형식입니다. 프래그먼트 셰이더를 적용하여 렌더링 할 수 있습니다. – WLGfx
따라서 TEXTURE_2D로 렌더링 할 수 있습니다. @WLGfx,이 점에 대해 깊이 읽으 려한다면? –