Framebuffer-Objekt - Framebuffer object

Die Frame Buffer Object Architecture (FBO) ist eine Erweiterung von OpenGL für das flexible Rendern außerhalb des Bildschirms, einschließlich des Renderns einer Textur . Durch die Aufnahme von Bildern, die normalerweise auf den Bildschirm gezeichnet werden, können eine Vielzahl von Bildfiltern und Nachbearbeitungseffekten implementiert werden. Der FBO ist analog zum Renderzielmodell in DirectX . Es wird in OpenGL wegen seiner Effizienz und Benutzerfreundlichkeit verwendet. Die Verwendung von FBOs leidet nicht unter dem mit dem Umschalten des OpenGL-Zeichnungskontexts verbundenen Overhead und hat den p-Puffer und andere Methoden, die Kontextwechsel beinhalten, weitgehend abgelöst .

Verwendet

Der FBO hat zwei Hauptanwendungen: Die Nachbearbeitung gerenderter Bilder und die Komposition zwischen verschiedenen Szenen. Einige Beispiele sind:

  1. Das gerenderte Bild wird aufgenommen und Fragment-Shadern oder anderen Manipulationen unterzogen . Auf diese Weise können viele der heute gängigen Computergrafikeffekte ausgeführt werden, einschließlich eines zusätzlichen Unschärfe- oder Bloom-Effekts.
  2. Kann verwendet werden, um Ansichten anderer Szenen zu erstellen, zum Beispiel: ein Fernseher in einem Haus, der die Ansicht von einer sekundären Kamera zeigt. Eine Szene kann durch einen FBO auf eine Textur gerendert werden, dann kann diese Textur auf die Oberfläche eines Fernsehgeräts angewendet werden. Dies wird manchmal als "Render to Texture" oder RTT bezeichnet.

Vorteile gegenüber anderen Methoden

Methoden, an denen der FBO beteiligt ist, gelten als überlegen, weil:

  • Es ist einfacher einzurichten als die meisten anderen Methoden.
  • Erfordert keine Kontextumschaltung.
  • Ist effizienter, da Ressourcen im selben Kontext gemeinsam genutzt werden.
  • Ist flexibler, da der gesamte Tiefenpuffer , Schablonenpuffer usw. erfasst werden kann.

Die Architektur

Um einen FBO zu verwenden, erstellt man einfach eine Instanz davon. Zusammen mit dem FBO kommen mehrere Anhänge. Man kann diese dann an einen ausgewählten Empfänger anhängen: entweder eine Textur oder einen Renderpuffer .

Beispielsweise:

  • Erstellen Sie einen FBO und binden Sie ihn.
  • Hängen Sie den Farbpuffer (entweder als RenderBuffer oder als Textur) an den FBO an.
  • Hängen Sie den Tiefenpuffer (entweder als RenderBuffer oder als Textur) an den FBO an.
  • Binden Sie das native Fenster FrameBuffer (id = 0)
  • Rendern Sie die Textur mit einem Pixel-Shader auf den Bildschirm, abhängig von den Farbinformationen und den Tiefeninformationen.

Externe Links