2012-12-30 13 views
1

간단한 OpenGL 3D 그래픽 엔진을 개발하기 위해 JOGL을 사용하고 있습니다. 지금은 FBO에 장면을 렌더링하는 간단한 렌더링 파이프 라인을 구현했습니다. 그런 다음 FBO의 색상 텍스처를 화면에 렌더링하는 셰이더로 전달하고 선택적으로 흐림 효과와 같은 일부 포스트 프로세스 효과를 적용합니다.JOGL FBObject 멀티 샘플링

FBO를 사용하지 않으면 JOGL로 멋진 멀티 샘플링을 사용하는 것이 매우 쉽습니다.

GLCapabilities caps = new GLCapabilities(null); 
caps.setSampleBuffers(true); 
caps.setNumSamples(8); 
GLJPanel gljp = new GLJPanel(caps); 

이 매우 간단하고 잘 생긴 결과에 이르게 : 멀티 샘플링을 사용하려면, 내가 스윙 안에 내 GL 패널을 호스팅하고 있습니다 때문에 예를 들어, 나는 GLJPanel을 사용하고 그래서처럼 만들기. 그러나 형상을 먼저 FBO에 그려야하는 경우에는 그리 유용하지 않습니다. 이를 수행하는 가장 좋은 방법은 FBO에 GL_TEXTURE_2D_MULTISAMPLE을 첨부하고 장면을 렌더링 한 다음 두 번째 패스의 프래그먼트 셰이더에서 멀티 샘플링을 수행하는 것입니다. JOGL는 식 코멘트를 관리 할 수 ​​있도록 다소 광범위한 FBObject 클래스를 제공하지만

, 나는 그것이 (단지에만 작동하도록 하드 코딩되어 TextureAttachment 개체 작업 허용하는 멀티 샘플링 된 텍스처를 렌더링하는 얻을 수있는 방법을 찾지 못했습니다 TEXTURE_2D 리소스). 따라서 단순히 제공된 FBObject를 스켈레톤으로 사용하는 대신 간단히 gl.gl * 호출로 대부분의 작업을 수행했습니다. 나는 이것이 hacky 나 다른 것이 아니라는 것을 알고있다. 아마도 "깨끗한"해결책은 TextureAttachment을 확장하고 멀티 샘플링 된 텍스쳐 전용 클래스를 생성하는 것이다.

내가 궁금한 점은 뭔가를 놓치고 있는지, 아니면 JOGL이 멀티 샘플링 텍스처로 FBO를 실제로 지원하지 않는 것인지 궁금한가요?

답변

1

누구나 똑같은 대답을 찾고있는 중이라면 사실 FBObjects를 사용하지 않으려 고합니다. 그리고 현재 내 프레임 버퍼 (새로운 지연 렌더러의 GBuffer 포함)를 관리하기 위해 보통 이전의 gl.gl* 명령을 사용하고 있습니다.