Estoy confundido sobre el concepto de Framebuffer y Renderbuffer. Sé que deben renderizar, pero quiero comprenderlos antes de usarlos.
Sé que se requiere un poco de búfer de mapa de bits para almacenar el resultado del dibujo temporal. El búfer trasero. Y se requiere ver el otro búfer en la pantalla cuando esos dibujos están en progreso. El amortiguador delantero. Y voltéalos, y dibuja de nuevo. Conozco este concepto, pero es difícil conectar esos objetos a este concepto.
¿Cuál es el concepto y las diferencias de ellos?
opengl
rendering
framebuffer
eonil
fuente
fuente
Respuestas:
Esta página tiene algunos detalles que creo que explican la diferencia bastante bien. En primer lugar:
Mientras:
fuente
El objeto Framebuffer no es en realidad un búfer, sino un objeto agregador que contiene uno o más archivos adjuntos, que a su vez, son los búferes reales. Puede entender el Framebuffer como estructura C donde cada miembro es un puntero a un buffer. Sin ningún archivo adjunto, un objeto Framebuffer tiene una huella muy baja.
Ahora cada buffer conectado a un Framebuffer puede ser un Renderbuffer o una textura .
El Renderbuffer es un buffer real (una matriz de bytes, enteros o píxeles). El Renderbuffer almacena valores de píxeles en formato nativo, por lo que está optimizado para la representación fuera de pantalla. En otras palabras, dibujar en un Renderbuffer puede ser mucho más rápido que dibujar en una textura. El inconveniente es que los píxeles utilizan un formato nativo dependiente de la implementación, por lo que leer desde un Renderbuffer es mucho más difícil que leer desde una textura. Sin embargo, una vez que se ha pintado un Renderbuffer , uno puede copiar su contenido directamente a la pantalla (u otro Renderbuffer , supongo), muy rápidamente usando operaciones de transferencia de píxeles. Esto significa que un Renderbuffer puede usarse para implementar eficientemente el patrón de doble buffer que mencionaste.
Los Renderbuffers son un concepto relativamente nuevo. Antes de ellos, se usaba un Framebuffer para representar una textura , que puede ser más lenta porque una textura usa un formato estándar. ¡Todavía es posible renderizar a una textura, y eso es bastante útil cuando uno necesita realizar múltiples pases sobre cada píxel para construir una escena, o dibujar una escena en una superficie de otra escena!
El wiki de OpenGL tiene esta página que muestra más detalles y enlaces.
fuente