2011-03-11 3 views
1

아이폰 3g 카메라의 기본 색상 공간은 YpCbCr 4 : 2 : 0입니다. 나는 OpenGL에서 많은 루미넌스 프로세싱을 할 계획이다. OpenGL에 프레임을 가져 오는 효율적인 방법이 있습니까?전체 YUV (YpCbCr) 4 : 2 : 0 프레임을 OpenGL에 전달하는 방법

저는 휘도를 얻기 위해 GL_LUMINANCE에 성공적으로 glteximage2d'ing했습니다. 컬러 데이터만으로 다른 glteximage2d를 통과하지 못했습니다. 2 회의 패스 이외의 다른 방법이 있습니까? 그렇지 않다면 그만한 가치가 있습니까?

답변

4

각 채널을 자체 GL_LUMINANCE 텍스처에 넣고 프래그먼트 셰이더에서 색상 공간 변환을 수행하여 구현했습니다.

+1

아마도 세 가지 텍스처를 사용하면 CPU에서 바이트 셔플을하지 않고도 AVFoundation이 반환 한 버퍼를 직접 업로드 할 수 있었습니까? – Tommy

+0

소리가 나는 것처럼 들리 겠지만, 추가 gltextimage2d 호출로 인해 성능면에서는 가치가 있는지 궁금합니다. – akaru

+0

@ 토미 : 사실 저는 채도 서브 샘플 형식 (YpCbCr 4 : 2 : 0은 그러한 형식 임)에서와 같이 채널에서 서로 다른 공간 해상도를 허용하기 위해 세 가지 텍스처를 사용하고 있습니다. 독일어 위키 피 디아에는 다른 modi를 보여주는 멋진 다이어그램이 있습니다. http://de.wikipedia.org/wiki/Farbunterabtastung#Bezeichnungsschema 셰이더 대신 여러 패스와 블렌딩 modi를 똑똑하게 조합 할 수도 있지만 솔직히 말해서 셰이더 구현하기가 쉽고 현재 하드웨어에서 더 잘 수행됩니다. – datenwolf

관련 문제