Articulo de referencia

Objeto Framebuffer

El objeto framebuffer (FBO) es una extensión de OpenGL que permite renderizar de forma flexible en búferes fuera de pantalla , incluyendo el renderizado en un búfer de texturas ...

El objeto framebuffer (FBO) es una extensión de OpenGL que permite renderizar de forma flexible en búferes fuera de pantalla , incluyendo el renderizado en un búfer de texturas . Se puede utilizar para implementar una gran variedad de filtros de imagen y efectos de posprocesamiento , renderizando primero las imágenes en el búfer fuera de pantalla, aplicando los efectos y, finalmente, enviándolas al búfer en pantalla.

El FBO se utiliza en OpenGL por su eficiencia y facilidad de uso. El uso de FBO no presenta la sobrecarga asociada con el cambio de contexto de dibujo de OpenGL y ha reemplazado en gran medida al pbuffer y otros métodos que utilizan el cambio de contexto.

El FBO es análogo al modelo de objetivos de renderizado en DirectX .

Usos

El FBO tiene dos usos principales: el postprocesamiento de imágenes renderizadas y la composición entre diferentes escenas. Algunos ejemplos son:

  1. La imagen renderizada se captura y se somete a sombreadores de fragmentos u otras manipulaciones. Esto permite realizar muchos de los efectos gráficos por computadora más populares de la actualidad, incluyendo la adición de un efecto de desenfoque o brillo.
  2. Se puede usar para crear vistas de otras escenas, por ejemplo: un televisor en una casa que muestra la vista desde una cámara secundaria. Una escena se puede renderizar a través de un FBO a una textura, y luego esa textura se puede aplicar a la superficie de un televisor. Esto a veces se denomina "renderizar a textura" o RTT.

Ventajas sobre otros métodos

Los métodos que involucran al FBO se consideran superiores porque:

  • Su configuración es más sencilla que la de la mayoría de los otros métodos.
  • No requiere cambio de contexto.
  • Es más eficiente porque los recursos se comparten dentro del mismo contexto.
  • Es más flexible porque se puede adquirir todo el búfer de profundidad , el búfer de plantilla , etc.

Arquitectura

Para usar un FBO, basta con crear una instancia del mismo. Junto con el FBO vienen varios adjuntos. Estos se pueden adjuntar a un receptor elegido: una textura o un búfer de renderizado . Un FBO puede exponer múltiples puntos de adjunto de color (GL_COLOR_ATTACHMENT0 y superiores), y las aplicaciones normalmente comprueban que el conjunto de adjuntos elegido esté completo en el búfer de fotogramas antes de renderizar en él. [ 1 ]

Por ejemplo:

  • Crea un FBO y vincúlalo.
  • Adjunte el búfer de color (ya sea como un RenderBuffer o una textura) al FBO.
  • Adjunte el búfer de profundidad (ya sea como un RenderBuffer o una textura) al FBO.
  • Vincular el FrameBuffer de ventana nativo (id=0)
  • Renderiza la textura en pantalla con un sombreador de píxeles, que depende tanto de la información de color como de la información de profundidad.

Referencias

  1. "Especificación del perfil principal de OpenGL 4.5" (PDF) . Grupo Khronos.
  • Objeto Framebuffer en la Wiki de OpenGL
  • Documento técnico sobre el objeto framebuffer. Archivado el 2 de mayo de 2013 en la Wayback Machine.
  • Referencia del objeto framebuffer en openvidia
  • Código de ejemplo para Windows y Linux
  • EXT Framebuffer (opengl.org)