프레임 버퍼 객체
Framebuffer objectFBO(Frame Buffer Object Architecture)는 OpenGL에 대한 확장 기능으로, 텍스쳐 렌더링을 포함하여 유연한 오프스크린 렌더링을 한다.통상 화면에 그려지는 영상을 캡처해 다양한 영상필터와 후처리 효과를 구현하는 데 활용할 수 있다.FBO는 DirectX의 렌더 대상 모델과 유사하다.효율성과 사용 편의성을 위해 OpenGL에서 사용한다.FBO의 사용은 OpenGL 도면 컨텍스트 스위칭과 관련된 오버헤드에 영향을 받지 않으며, 대부분 pbuffer와 컨텍스트 스위치를 포함하는 다른 방법을 대체했다.
사용하다
FBO는 두 가지 주요 용도를 가지고 있다.서로 다른 장면 간에 렌더링된 영상과 합성물의 사후 처리.몇 가지 예는 다음과 같다.
- 렌더링된 이미지는 캡처되어 Fragment Shaders 또는 다른 조작을 받는다.이를 통해 오늘날 인기 있는 컴퓨터 그래픽 효과의 상당수를 수행할 수 있으며, 여기에는 흐릿하거나 꽃피는 효과가 추가된다.
- 예를 들어, 보조 카메라에서 보기를 보여주는 집의 TV와 같은 다른 장면의 보기를 만드는 데 사용할 수 있다.FBO를 통해 텍스처로 장면을 렌더링한 다음, 그 텍스처를 TV 표면에 적용할 수 있다.이것을 "질감을 렌더" 또는 RTT라고 부르기도 한다.
다른 방법보다 장점
FBO와 관련된 방법은 다음과 같은 이유로 우월하다고 간주된다.
- 대부분의 다른 방법보다 설정하기가 쉽다.
- 컨텍스트 전환이 필요하지 않음
- 리소스가 동일한 컨텍스트 내에서 공유되기 때문에 더 효율적이다.
- 깊이 버퍼, 스텐실 버퍼 등을 모두 획득할 수 있어 유연성이 높다.
건축
FBO를 사용하는 것은 단순히 그것의 인스턴스를 만드는 것이다.FBO와 함께 몇 개의 첨부파일이 온다.그런 다음 질감 또는 렌더 버퍼 중 하나를 선택한 수신기에 부착할 수 있다.
예를 들면 다음과 같다.
- FBO를 생성하고 바인딩하십시오.
- 컬러 버퍼(렌더버퍼 또는 텍스쳐로)를 FBO에 부착하십시오.
- 깊이 버퍼(렌더버퍼 또는 텍스처)를 FBO에 부착하십시오.
- 기본 창 FrameBuffer 바인딩(id=0)
- 색 정보 및 깊이 정보에 따라 픽셀 셰이더를 사용하여 화면을 표시하도록 텍스처를 렌더링하십시오.