Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What are the differences between a Frame Buffer Object and a Pixel Buffer Object in OpenGL?

Tags:

opengl

What is the difference between FBO and PBO? Which one should I use for off-screen rendering?

like image 802
alvatar Avatar asked Apr 14 '09 15:04

alvatar


People also ask

What are frame buffers in OpenGL?

Framebuffer Objects are OpenGL Objects, which allow for the creation of user-defined Framebuffers. With them, one can render to non-Default Framebuffer locations, and thus render without disturbing the main screen.

What is the different between Renderbuffer and framebuffer?

Without any attachment, a Framebuffer object has very low footprint. Now each buffer attached to a Framebuffer can be a Renderbuffer or a texture. The Renderbuffer is an actual buffer (an array of bytes, or integers, or pixels).

What is a buffer object in OpenGL?

Buffer Objects are OpenGL Objects that store an array of unformatted memory allocated by the OpenGL context (AKA the GPU). These can be used to store vertex data, pixel data retrieved from images or the framebuffer, and a variety of other things.

What is a frame buffer in computer graphics?

A framebuffer (frame buffer, or sometimes framestore) is a portion of random-access memory (RAM) containing a bitmap that drives a video display. It is a memory buffer containing data representing all the pixels in a complete video frame. Modern video cards contain framebuffer circuitry in their cores.


2 Answers

What is the difference between FBO and PBO?

A better question is how are they similar. The only thing that is similar about them is their names.

A Framebuffer Object (note the capitalization: framebuffer is one word, not two) is an object that contains multiple images which can be used as render targets.

A Pixel Buffer Object is:

  1. A Buffer Object. FBOs are not buffer objects. Again: framebuffer is one word.
  2. A buffer object that is used for asynchronous uploading/downloading of pixel data to/from images.

If you want to render to a texture or just a non-screen framebuffer, then you use FBOs. If you're trying to read pixel data back to your application asynchronously, or you're trying to transfer pixel data to OpenGL images asynchronously, then you use PBOs.

They're nothing alike.

like image 149
Nicol Bolas Avatar answered Sep 20 '22 17:09

Nicol Bolas


A FBO (Framebuffer object) is a target where you can render images other than the default frame buffer or screen.

A PBO (Pixel Buffer Object) allows asynchronous transfers of pixel data to and from the device. This can be helpful to improve overall performance when rendering if you have other things that can be done while waiting for the pixel transfer.

like image 40
Reed Copsey Avatar answered Sep 18 '22 17:09

Reed Copsey