2012-12-31 6 views
1

GPUImage 라이브러리를 이미지 처리 용으로 사용하려고합니다 (이미지 출력용이 아님). 기본적으로 라이브러리는 하나의 BGRA 텍스처를 출력합니다. 대신 단일 채널/단일 바이트 텍스처를 여러 개 출력하고 싶습니다. 지금까지 BGRA의 각 픽셀에 대해 여러 가지 계산을 비트 포장했습니다. 나는 a) 이제 각 픽셀에 대해 4보다 큰 반환 값을 갖고 있기 때문에 b) BGRA-BGRA-BGRA-BGRA .....를 디인터레이싱하는 오버 헤드가 BBBB ..로 바뀌었기 때문에 그러한 방법의 한계에 도달했습니다. GGGG .., RRRR .., AAAA .., 정말 내 프로그램을 늪지하기 시작했습니다.GPUImage 및 OpenGL ES의 단일 단일 채널 출력

GPUImage에서 여러 입력 텍스처를 사용하기위한 샘플 코드가 있지만 여러 출력 텍스처에 대해서는 아무 것도 보지 못했습니다. 싱글 바이트 출력의 경우 GL_ALPHA 텍스처 (?)를 사용할 수 있다고 생각합니다. 따라서 필터 매크로에서 변수를 여러 텍스처로 바인딩하는 것이 중요합니다.

감사합니다.

+1

불행하게도 렌더링 타겟으로 사용되는 텍스처의 색상 포맷 옵션은 다소 제한적입니다. 나는 시도하지는 않았지만 GL_RED_EXT 텍스처를 한 컴포넌트 사용을위한 FBO 타겟으로 사용할 수 있다고 생각하지 않습니다. 이는 입력 텍스처에만 사용되는 것입니다. 현재 출시 된 iOS 기기는 여러 렌더링 타겟을 지원하지 않으므로 여러 렌더링 패스에서 작업해야 할 수도 있습니다. 왜 결국에는 값을 디인터레이스해야합니까? –

+1

조금 파고 들자 GL_RED_EXT 텍스처를 렌더 타겟으로 사용할 수 있지만 여러 개의 동시 타겟을 필요로하는 핵심적인 문제는 해결되지 않습니다. 별도의 데이터 플레인을 가져 오려면 여러 쉐이더를 사용하여 여러 번의 렌더링 패스가 필요합니다. –

+0

이들이 동일한 "프로그램"의 일부로 여러 쉐이더가 될 수 있습니까? 별도의 셰이더를 쓰는 것에 신경 쓰지는 않습니다. 오버 헤드가 염려됩니다. 오랫동안 입력 메모리를 프레임 당 5 번 복사 할 필요가 없다면 문제가 될 것이라고 생각하지 않습니다. 나는 내가 GL_RED_EXT로 무엇을 할 수 있는지 알아볼 것이다. 감사! –

답변

0

아마 당신이 필요로하는 것은 Multiple Rendering Targets (또는 MRT)입니다. GL_COLOR_ATTACHMENT를 사용하여 얼마나 많은 컬러 첨부 파일을 하드웨어 지원 대상으로 검사 할 수 있습니다. 불행히도 모든 iOS 장치가 지원되는 것은 아닙니다.