2009-04-14 16 views

Respuesta

17

A FBO (objeto Framebuffer) es un objetivo donde puede representar imágenes distintas del búfer o la pantalla del fotograma predeterminado.

A PBO (Objeto de búfer de píxeles) permite transferencias asíncronas de datos de píxeles hacia y desde el dispositivo. Esto puede ser útil para mejorar el rendimiento general al procesar si tiene otras cosas que se pueden hacer mientras espera la transferencia de píxeles.

12

me gustaría leer VBOs, PBOs and FBOs:

Apple ha publicado dos bits muy agradables de OBP código de ejemplo que demuestran y las organizaciones religiosas. Aunque estos son específicos de Mac, como código de muestra son buenos en cualquier platoforma porque las PBO y FBO son extensiones OpenGL, no extensiones de sistema de ventanas.

¿Qué son todos estos objetos? Aquí es la situación:

70

¿Cuál es la diferencia entre las OBF y PBO?

Una mejor pregunta es cómo son similares. Lo único que es similar sobre ellos es sus nombres .

A Framebuffer Object (tenga en cuenta que el uso de mayúsculas y minúsculas: framebuffer es una palabra, no dos) es un objeto que contiene múltiples imágenes que pueden utilizarse como objetivos de representación.

A Pixel Buffer Object es:

  1. A Buffer Object. Los FBO son no objetos de búfer. De nuevo: framebuffer es una palabra.
  2. Un objeto de búfer que se utiliza para uploading/downloading of pixel data to/from images asincrónico.

Si desea procesar a una textura o simplemente un non-screen framebuffer, a continuación, utiliza las organizaciones religiosas. Si intenta volver a leer los datos de píxeles de manera asíncrona, o está intentando transferir datos de píxeles a imágenes OpenGL de forma asincrónica, entonces utiliza PBO.

No se parecen en nada.

+5

Esperemos que esto se vote por encima de la respuesta de enlace puro y la respuesta incorrecta (desafortunadamente aceptada). –

+0

@ChristianRau: Lo revisé, y el OP parece ser un habitual. Entonces, hay esperanza de que sea aceptado. –

4

Quiero destacar algo.

FBO no bloque de memoria. Creo que parece estructura de puntero. Debes unir Textura a FBO para usarlo. Después de adjuntar Textura, ahora puede dibujar para renderizado fuera de pantalla o para efecto de segundo pase.

struct FBO{ 
AttachColor0 *ptr0; 
AttachColor1 *ptr1; 
AttachColor2 *ptr2; 
AttachDepth *ptr3; 
}; 

En el otro lado, PBO es bloque de memoria "bloque para mantener tipo de memoria."Trate de pensarlo como malloc de tamaño x, luego puede usar memcpy para copiar datos de él a texture/FBO o a él".

  • ¿Por qué utilizar PBO?

Crear memoria intermedia intermedia para interactuar con la memoria del Host y no detener el dibujo OpenGL cargará textura desde o hacia el host.

Cuestiones relacionadas