descargar - opengl minecraft
¿Cuáles son las diferencias entre un objeto de búfer de trama y un objeto de búfer de píxel en OpenGL? (4)
¿Cuál es la diferencia entre FBO y PBO? ¿Cuál debería usar para renderizar fuera de la pantalla?
¿Cuál es la diferencia entre FBO y PBO?
Una mejor pregunta es cómo son similares. Lo único que es similar acerca de ellos es su nombre .
Un FBO (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.
Un objeto de memoria intermedia de píxeles es:
- Un Objeto Buffer Los FBO no son objetos de buffer. De nuevo: framebuffer es una palabra.
- Un objeto de búfer que se utiliza para la carga / descarga asíncrona de datos de píxeles hacia / desde imágenes .
Si quieres renderizar una textura o simplemente un framebuffer que no sea de pantalla , entonces usas FBOs. 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 son nada iguales.
Leería VBO, PBO y FBO :
Apple ha publicado dos muestras muy bonitas de código de muestra que demuestran PBO y FBO. Aunque estos son específicos de Mac, como código de muestra, son buenos en cualquier platoforma porque los PBO y FBO son extensiones OpenGL, no extensiones de sistema de ventanas.
Entonces, ¿qué son todos estos objetos? Aquí está la situación:
Quiero resaltar algo.
FBO no es 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;
};
Por otro lado, PBO es un bloque de memoria "bloque para contener el 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é usar PBO?
Crea un búfer de memoria intermedio para interactuar con la memoria del Host y no para detener el dibujo de OpenGL cargará la textura hacia o desde el host.
Un FBO (objeto Framebuffer) es un objetivo en el que puede representar imágenes distintas del búfer o la pantalla del fotograma predeterminado.
Un PBO (Pixel Buffer Object) permite transferencias asincrónicas 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.