FBO를 사용하여 누적 버퍼와 함께 사용할 수있는 것과 동일한 종류의 앤티 앨리어싱을 구현할 수 있습니다. 프로세스는 거의 동일하지만, 누적 버퍼로 텍스처/렌더 버퍼를 사용한다는 점만 다릅니다. 프로세스에 두 개의 FBO를 사용하거나 단일 렌더 FBO의 연결된 렌더 대상을 변경할 수 있습니다. 두 식 코멘트를 사용
의사 코드에서
는, 플로우는 다음과 같이 대략 같다 :
create renderbuffer rbA
create fboA (will be used for accumulation)
bind fboA
attach rbA to fboA
clear
create texture texB
create fboB (will be used for rendering)
attach texB to fboB
(create and attach a renderbuffer for the depth buffer)
loop over jitter offsets
bind fboB
clear
render scene, with jitter offset applied
bind fboA
bind texB for texturing
set blend function GL_CONSTANT_ALPHA, GL_ONE
set blend color 0.0, 0.0, 0.0, 1.0/#passes
enable blending
render screen size quad with simple texture sampling shader
disable blending
end loop
bind fboA as read_framebuffer
bind default framebuffer as draw framebuffer
blit framebuffer
전체 슈퍼 샘플링이 가능하다. 위의 설명에서 Andon이 제안한 것처럼, 각 차원에서 윈도우 크기의 배수 인 렌더 타겟을 사용하여 FBO를 만들고, 결국에는 윈도우에 다운 스케일링 블리트를 수행합니다. 모든 것은 느린 경향이 있고 심지어 2의 계수만으로도 많은 메모리를 사용합니다.
어떤 GL 버전을 타겟팅합니까? 누적 버퍼는 GL 3.0에서는 더 이상 사용되지 않지만 3.1에서는 (GL_ARB_compatibility가없는)/3.2+ * Core *에서는 제거되었습니다. 이것이 OS X 또는 Intel의 드라이버에서 찾을 수없는 이유입니다. 누적 버퍼 대신에 기본 프레임 버퍼의 크기의 정수 배수를 사용하여 FBO로 드로잉 한 다음 나중에 간단한'GL_LINEAR' 필터를 사용하여 다운 샘플링을 수행 하시겠습니까? –
안녕하세요, 안동, 답장을 보내 주셔서 감사합니다. – Fravadona
고대의 현대식 OpenGL 구현과 호환되는 양질의 장면 앤티 앨리어싱 (이미지 저장 용)을 수행하는 모든 방법을 고려하고 있습니다. 이제 인터넷에서 "GLX FBO GL_LINEAR 다운 샘플링"예제를 살펴 보겠습니다. – Fravadona