¿Cuáles son las diferencias entre un objeto Frame Buffer y un Objeto Pixel Buffer en OpenGL?


¿Cuál es la diferencia entre FBO y PBO? ¿Cuál debo usar para renderizar fuera de la pantalla?

 43
Author: Jonathan Leffler, 2009-04-14

4 answers

A FBO (objeto Framebuffer) es un destino donde puede renderizar imágenes que no sean el búfer de marco o la pantalla predeterminados.

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

 17
Author: Reed Copsey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-06-09 19:26:08

¿Cuál es la diferencia entre FBO y PBO?

Una mejor pregunta es cómo son similares. Lo único que es similar en ellos son susnombres .

Un Objeto Framebuffer (nota la mayúscula: framebuffer es una palabra, no dos) es un objeto que contiene varias imágenes que se pueden usar como destinos de renderizado.

Un Objeto de búfer de Píxel es:

  1. Un Objeto Buffer. Los FBOS son no búfer objeto. De nuevo: framebuffer es una palabra.
  2. Un objeto de búfer que se utiliza para cargar/descargar de forma asíncrona datos de píxeles a/desde imágenes.

Si desea renderizar una textura o simplemente un framebuffer que no sea de pantalla, entonces use FBOs. Si intentas leer datos de píxeles de vuelta a tu aplicación de forma asíncrona, o si intentas transferir datos de píxeles a imágenes OpenGL de forma asíncrona, entonces utilizas PBO.

No se parecen en nada.

 74
Author: Nicol Bolas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-04 14:59:54

Yo leería VBOs, PBO y FBOs :

Apple ha publicado dos bits muy agradables de código de ejemplo que demuestra PBO y FBOs. A pesar de que estos son Específicos de Mac, como código de muestra son bueno en cualquier plataforma porque PBO y FBOs son extensiones OpenGL, no extensiones del sistema de ventanas.

Entonces, ¿qué son todos estos objetos? Aca la situación:

 11
Author: Andrew Hare,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-04-14 15:39:48

Quiero resaltar algo.

FBO no es bloque de memoria. Creo que parece estructura de puntero. Debe adjuntar Textura a FBO para usarlo. Después de adjuntar textura, ahora puede dibujarla para renderizar fuera de la pantalla o para el efecto de segundo paso.

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

Por otro lado, PBO es bloque de memoria "bloque para contener el tipo de memoria. "Trata de pensar en él como malloc de tamaño x, entonces puedes usar memcpy para copiar datos de él a texture/FBO o a él".

  • Por qué usar ¿PBO?

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

 4
Author: wow2006,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-09 18:02:23