2009-11-21 4 views
1

여러 컬러 첨부 파일이있는 OpenGL 프로그램에서 프레임 버퍼 오브젝트를 가지고 있으며이를 멀티 샘플링 된 FBO로 업그레이드하려고합니다.OpenGL의 다중 컬러 첨부가있는 다중 샘플 FBO 블 리핑

필자가 이해 하듯이 다중 샘플 FBO는 렌더링 버퍼, 특히 glRenderbufferStorageMultisampleEXT을 사용하여 생성 된 버퍼 만 사용할 수 있습니다. 텍스처에서이 FBO로 렌더링 된 것을 원한다면 첨부 파일을위한 텍스처를 가진 두 번째 FBO를 만든 다음을 사용하여 멀티 샘플링 된 FBO를 일반 FBO와 블릿해야합니다.

필자가 본 매우 희소 한 예는 단색 부착이라고 가정합니다. 여러 색상의 첨부 파일을 blit하려면 어떻게해야합니까? 에서

답변

1

EXT_framebuffer_blitspecification

12) 여러 색상 버퍼가 BlitFramebuffer 단일 호출로 복사 할 수 있도록 우리가 여러 ReadBuffers에 대한 지원을 추가해야 하는가?

해결 : 아니오, 우리는 이것을 고려했지만 어색한 행동은 정의하기에 이며 기능은 제한적으로 사용됩니다. 컬러 버퍼가 전송되면

이 값은 연신 버퍼의 각각에 리드 프레임 버퍼 읽기 버퍼에서 촬영하고 기록합니다 (EXT_ 버전 superscedes)를 arb_framebuffer_objectspecification 가입일

CopyPixels와 마찬가지로 draw 프레임 버퍼의 .

이렇게 ... 블릿 당 하나의 컬러 버퍼에서만 해결한다는 것은 확실합니다.

여러 버퍼를 수행하려면 각 버퍼에 대해 블릿을 수행하고 blit하려는 각 버퍼에 대해 READ_BUFFER을 변경하고 draw framebuffer의 해당 그리기 버퍼를 선택해야합니다.

0

새 Fbo를 만들고 슬롯 1의 렌더링 버퍼를 슬롯 0에 할당 할 수 있습니다. 그런 다음 읽기 및 블릿을 위해 최종 목적지 인 Fbx로 바인딩합니다.

즉, Fbo는 다른 Fbo에 의해 작성된 기존 렌더 버퍼를 바인딩하기 위해 순전히 생성 될 수 있습니다. Fbo는 실제로 연결된 버퍼를 소유하지 않으므로 여러 Fbx가 동일한 텍스처/렌더 버퍼에 바인딩 될 수 있습니다 (동시에는 아니지만).

Fbo0 Fbo0에 렌더링 // [ColorBuffer0, ColorBuffer1, DethBuffer]

// Fbo1 판독 슬롯 0 ColorBuffer1와 다른 FBO 바인딩 : ColorBuffer1]

// 블리트 Fbo0 ColorBuffer0을 > Fbo2 Texture0 Fbo0 [ColorBuffer0, ColorBuffer1, DethBuffer] => Fbo2 [Texture0]

// 블리트 Fbo1 ColorBuffer1 (슬롯 0에 결합)> Fbo3 Texture1 (슬롯 0에 결합) Fbo1 [ColorBuffer1] => Fbo3 : [텍스처 1]