Android Camera Preview data format 이 YCbCr_420_SP (NV21) (one of Planar YUV Formats) 라고히지요.
camera preview width * height 만큼의 Y 바이트 그룹과 이어서 UV 그룹으로 되어있다고 그러네요.
OpenGL ES 2.0 에서
이 YUV 데이터를 텍스쳐(들)로 설정하는 방법과
Shader 에서 이 설정된 텍스쳐(들)들에서 RGB 로 변경하는 방법이 궁금합니다.
제가 여지껏 해매며 한 것은
camera preview width * height 만큼의 Y 바이트 그룹을 SamplerY 에
그 이후 UV 바이트 그룹을 SamplerUV 에 설정한겁니다.
텍스쳐설정방법이 이상한건지...완전 칼라가 안나옵니다.
fragment shader 에서
varying vec2 vTextureCoord;
uniform sampler2D SamplerY;
uniform sampler2D SamplerUV;
void main() {
vec3 yuv, rgb;
yuv.x = texture2D(SamplerY, vTextureCoord).r;
yuv.yz = texture2D(SamplerUV, vTextureCoord).rg - vec2(0.5, 0.5);
rgb = mat3( 1, 1, 1,
0, -.21482, 2.12798,
1.28033, -.38059, 0) * yuv;
gl_FragColor = vec4(rgb, 1);
}