Computer Graphics

프레임 버퍼 FBO(프레임 버퍼 오브젝트)란 frame buffer object

익플루 2014. 2. 22. 16:19
반응형

FBO에 대해 알아봅시다~

 

 

 

우선 버퍼(buffer)가 무엇인지 알아보자

컴퓨팅에서, 버퍼(buffer, 문화어: 완충기억기)는 데이터를 한 곳에서 다른 한 곳으로 전송하는 동안 일시적으로 그 데이터를 보관하는 메모리의 영역이다. 버퍼링(buffering)이란 버퍼를 활용하는 방식 또는 버퍼를 채우는 동작을 말한다. 다른 말로 '큐(Queue)'라고도 표현한다.

보통 데이터는 키보드와 같은 입력 장치로부터 받거나 프린터와 같은 출력 장치로 내보낼 때 버퍼 안에 저장된다. 그러나 버퍼는 컴퓨터 안의 프로세스 사이에서 데이터를 이동시킬 때 사용된다. 이는 전자 통신의 버퍼와 비유할 수 있다. 버퍼는 하드웨어나 소프트웨어에 추가될 수 있지만 버퍼는 상당수가 소프트웨어에 추가된다. 버퍼는 보통 속도가 계속 바뀔 수 있으므로 데이터 수신, 처리 속도에 차이가 있다. (예: 프린터 스풀러)

버퍼는 네트워크 상에서 자료를 주고 받을 때나 스피커에 소리를 재생할 때, 또는 디스크 드라이브와 같은 하드웨어의 입출력을 결합하는 데에 자주 이용된다. 버퍼는 또한 순서대로 데이터를 출력하는 FIFO 방식에서 보통 사용된다.

 

-위키백과-

 

 

프레임 버퍼(frame buffer) 란

 

래스터 주사 방식에서 화면에 나타날 영상 정보를 일시적으로 저장하는 기억 장치.

그래픽 프로세서가 중앙 처리 장치(CPU)로부터 도형을 표현하는 디스플레이 리스트를 받아 변환하여 프레임 버퍼에 기록한다. 프레임 버퍼의 각 기억 단위는 화면의 하나의 화소에 하나씩 대응하여 화면에 그대로 반영된다. 즉 화면의 각 점의 온(on)/오프(off)나 색깔을 비트 맵으로 기억하고 있으며 이 기억 장치에 어떤 내용을 써넣으면 그것이 화면에 표시된다. 이는 대개 시스템의 주기억 장치와는 별도로 분리되어 있으며, 특별한 기술을 사용하여 속도를 빠르게 하기도 한다.

 

 

 

FBO 란?( frame buffer object )

OpenGL 렌더링 파이프라인에서 geometry 데이터 및 질감 변화 몇 가지 테스트를 통과 그리고 마지막으로 2D 픽셀 화면에 렌더링. OpenGL 파이프라인의 최종 렌더링 대상 프레임 버퍼를라고 합니다. 프레임 버퍼는 2D 배열 또는 스토리지 OpenGL;에 의해 활용 모음 색상 버퍼, 깊이 버퍼, 스텐실 버퍼와 누적 버퍼. 기본적으로 OpenGL 프레임 버퍼를 사용 하 여 생성 되 고 전적으로 윈도우 시스템에 의해 관리 되는 렌더링 대상으로. 이 기본 프레임 버퍼 창 시스템 제공 버퍼를 라고 합니다.

OpenGL 확장 GL_ARB_framebuffer_object 추가 비 표시할 수 있는 프레임 버퍼 개체 (FBO)를 만들 수 있는 인터페이스를 제공 합니다. 이 버퍼 기본 윈도우 시스템 제공 버퍼에서 구분 하기 위해 응용 프로그램 생성 프레임 버퍼를 라고 합니다. 프레임 버퍼 개체 (FBO)를 사용 하 여 OpenGL 응용 프로그램 전통적인 창 시스템 제공 버퍼 이외 응용 프로그램 만든 프레임 버퍼 개체 (FBO) 렌더링 출력을 리디렉션할 수 있습니다. 그리고, 그것은 완전히 OpenGL에 의해 제어 됩니다.

창 시스템 제공 버퍼와 마찬가지로 FBO 목적지; 렌더링의 컬렉션을 포함 색상, 깊이 스텐실 버퍼입니다. (누적 버퍼 FBO에서 정의 되지 않은 참고.) 이러한 논리는 FBO 버퍼는 프레임 버퍼 개체를 연결할 수 있는 픽셀의 2 차원 배열을 프레임 버퍼를 연결할 수 있는 이미지를 라고 합니다.

거기 두 가지 유형의 프레임 버퍼 연결 가능한 이미지; 텍스처 이미지와 renderbuffer 이미지입니다. 텍스처 개체의 이미지를 프레임 버퍼에 연결 하는 경우 OpenGL "텍스처 렌더링"을수행 합니다. Renderbuffer 개체의 이미지를 프레임 버퍼에 연결, OpenGL 수행 "오프 스크린 렌더링".

그건 그렇고, renderbuffer 개체 는 GL_ARB_framebuffer_object 확장에 정의 된 저장소 개체의 새로운 유형입니다. 렌더링 프로세스 동안 단일 2D 이미지 렌더링 대상으로 사용 됩니다.


FBO, 텍스처와 Renderbuffer 사이의 연결

다음 다이어그램에서는 프레임 버퍼 개체, 텍스처 개체 renderbuffer 개체 간의 연결을 보여 줍니다. 여러 질감 개체 또는 renderbuffer 개체는 첨부 파일 포인트를 통해 프레임 개체에 첨부할 수 있습니다.

여러 색상 첨부 파일 포인트 (GL_COLOR_ATTACHMENT0,..., GL_COLOR_ATTACHMENTn), 하나의 깊이 첨부 파일 점 (GL_DEPTH_ATTACHMENT), 및 1 개의 스텐실 첨부 파일 (GL_STENCIL_ATTACHMENT) 프레임 버퍼 개체에. 컬러 첨부 파일 포인트 수 구현 종속, 하지만 각 FBO 적어도 하나의 색상 부속품 지점이 있어야 합니다. 그래픽 카드에서 지 원하는 GL_MAX_COLOR_ATTACHMENTS와 컬러 부속품 포인트의 최대 수를 쿼리할 수 있습니다. 이유는 FBO 여러 컬러 부속품 포인트 동시에 여러 대상 색상 버퍼를 렌더링 하는 데 허용 됩니다. GL_ARB_draw_buffers 확장에 의해이 "여러 렌더링 대상" (MRT)을 수행할 수 있습니다. 프레임 버퍼 개체 자체는, 그러나, 그것은 어떤 이미지 storage(array) 통지만 여러 첨부 파일 포인트를 했다.

프레임 버퍼 개체 (FBO)를 효율적인 스위칭 메커니즘; 이전 프레임 버퍼를 연결할 수 있는 이미지는 FBO에서 분리 하 고 FBO를 새로운 프레임 버퍼를 연결할 수 있는 이미지를 첨부. FBOs 사이 전환 보다 훨씬 빠릅니다 프레임 버퍼를 연결할 수 있는 이미지를 전환 합니다. FBO glFramebufferTexture2D() 2D 텍스처 개체 및 glFramebufferRenderbuffer() renderbuffer 개체를 전환 스위치를 제공 합니다.

 

 

OpenGL Frame Buffer Object (FBO)

 

참조 : http://www.songho.ca

 

 

 

반응형