2013-09-07 6 views
0

없이 조각 쉐이더에 YUV 데이터를 전달하는 방법, 프레 그먼트 쉐이더에 YUV420sp를 전달하기 위해 나는 YUV로 데이터를 spliting 정보 및 GL_LUMINANCE 형식으로 각 sugin glTexImage2D 전달을 통과안드로이드에서 GL_LUMINANCE

하지만 지금 FBO가 필요한 Offscren-Rendering을 할 필요가 있습니다. FBO가 GL_LUMINANCE를 지원하지 않는다는 것이 문제입니다.

그래서 GL_LUMINANCE를 사용하지 않고 YUV 데이터를 전달하는 가장 좋은 방법은 무엇입니까?

그런데 CPU에서 YUV를 처리하고 RGB 또는 다른 것으로 변환 할 수 없습니다. 전체 요점은 YUV를 그대로 GPU에 전달하는 것입니다.

EDIT : 이것은 Android 용이므로 단일 채널 GL_RED는 작동하지 않으므로 구현되지 않았습니다.

+0

FBO는 단지 컨테이너 일뿐입니다. 첨부 파일 형식은 아마도 필요한 것입니다. 또한 YUV를 셰이더에서 어떻게 처리 할 예정입니까? RGB AFAIK로 변환해야합니다. –

+0

YUV는 쉐이더 내부에서 변환되며 예상대로 작동하며 빠르게 타오른다. 첨부 파일 형식에 대한 자세한 정보가 있습니까? 감사합니다 – PerracoLabs

+0

FBO는 무엇이며 어떻게 사용합니까? FBO에 입력 텍스처를 FBO에 바인딩하는 것과 동일한 방식으로 FBO –

답변

1

GL_LUMINANCE은 프로그래밍 가능한 파이프 라인에서는 완전히 필요하지 않습니다.

고정 기능 파이프 라인 시대에 텍스쳐 스위 즐링을 허용하는 해킹이었습니다. 요즘은 단일 채널 텍스처에 GL_RED을 사용하고 있으며 조각 쉐이더에서 원하는대로 원하는대로 바꿀 수 있습니다.

복제하려는 내용 GL_LUMINANCE은 : vec4 (texture (...).rrr, 1.0)입니다. ARB_texture_swizzle을 사용하는 최근 OpenGL 구현에서 고정 함수 파이프 라인에서이를 수행 할 수도 있습니다.

+0

안녕하세요, GL_RED는 내 희망 이었지만 Android GLES 2.0은 구현되지 않았습니다. 나는 왜 그들이 이것과 같은 것을 놓친 이유를 이해할 수 없다. 그래서 나는 그 해결책을 사용할 수 없다. – PerracoLabs

+0

@Zhenya : 당신의 구현은 확장자가 GL_EXT_texture_rg인가? 형식 :'GL_R8_EXT'는 OpenGL ES 2.0 (이 확장자를 가지고있는 경우)에서 컬러 렌더링이 가능합니다. 그렇지 않으면 RGB [A] 텍스처의 R 채널로 렌더링하고 다른 2/3 구성 요소를 무시하면됩니다 (대역폭 낭비는 확실하게 있지만 유일한 옵션 일 수 있습니다). –