Immediate Mode (Computergrafik)

aus Wikipedia, der freien Enzyklopädie

Immediate Mode (wörtlich übersetzt: Unmittelbar-Modus) ist ein Entwurfsmuster in der Computergrafik für die Gestaltung der Programmierschnittstelle (API) in Grafikbibliotheken, wo

ohne Nutzung – also unmittelbar - umfangreicher Umleitungen auf gespeicherte Ressourcen.[1] Das schließt die Verwendung von Doppelpufferung nicht aus.

Der Retained Mode ist ein alternativer Ansatz. Historisch betrachtet ist der Retained Mode der vorherrschende Stil in Programmbibliotheken für grafische Benutzeroberflächen (GUI)[2]; jedoch können beide Modi auch in ein und derselben Programmbibliothek koexistieren und sind in der Praxis nicht unbedingt einander ausschließend.

Übersicht

Schematische Erläuterung des Unmittelbar-Modus eines Grafik-API

Im Immediate Mode wird die Szene (das komplette Objektmodell der grafischen Primitive) im Speicherbereich des Clients statt der Grafikbibliothek gespeichert. Dies impliziert, dass bei einer Anwendung im Immediate Mode die Listen der grafischen Objekte, die gerendert werden sollen, vom Client und nicht von der Programmierschnittstelle (API) der Grafikbibliothek gespeichert werden. Die Anwendung muss jedes Mal, wenn ein neues Bild benötigt wird, alle Zeichenbefehle, unabhängig von den tatsächlichen Änderungen, zur Beschreibung der gesamten Szene neu bereitstellen. Diese Methode bietet einerseits ein Höchstmaß an Kontrolle und Flexibilität für das Anwendungsprogramm, andererseits erzeugt sie aber auch eine kontinuierliche Arbeitsbelastung der CPU.

Schematische Erläuterung des Modus mit gespeicherten Ressourcen eines Grafik-API im Unterschied

Beispiele für Immediate-Mode-Rendering-Systeme sind Direct2D[1], OpenGL[3] and Quartz[4]. Es existieren einige Immediate Mode GUIs, die besonders für eine Verwendung in Verbindung mit Immediate Mode Rendering-Systemen geeignet sind.

Es gibt ein weiteres bedeutendes Entwurfsmuster der Programmierschnittstelle in Grafikbibliotheken – den Retained Mode.

Rendern von grafischen Primitiven im Immediate Mode

Einfache Vertex-Eigenschaften können durch ein Renderer-API Bild für Bild in einen Befehlspuffer eingefügt werden. Dies ist mit erheblicher Bandbreite und Prozessorzeit verbunden (insbesondere, wenn sich der Grafikprozessor auf einem separaten Bus befindet), kann aber für Daten, die dynamisch von der CPU erzeugt werden, von Vorteil sein. Seit dem Aufkommen immer vielseitigerer Shader, mit denen eine Grafikprozessor immer komplexere Effekte ohne die Notwendigkeit eines Eingriffs der CPU erzeugen kann, ist dies seltener geworden.

Rendern mit Vertex Puffern in Immediate Mode

Obwohl Zeichenbefehle für jedes Bild neu bereitgestellt werden müssen, können moderne Systeme, die diese Methode verwenden, im Allgemeinen die unnötige Duplizierung speicherintensiverer Anzeigedaten vermeiden, indem sie in den Zeichenbefehlen auf diese unveränderlichen Daten (über Indirekte Adressierung) verweisen (z. B. Texturen und Vertexpuffer).

Verwendung bei grafischen Benutzeroberflächen

Einzelnachweise

  1. a b Quinn Radich: Retained Mode Versus Immediate Mode. In: Win32 apps. Microsoft. 30. Mai 2018. Abgerufen am 21. Dezember 2019.
  2. Alex Feldmeier: GUI Programming. In: UWP Computer Science and Software Engineering Technical Report. 12. Oktober 2013. Abgerufen am 22. Dezember 2019: „Retained mode has been the standard for years. Just about every GUI is in retained mode.“
  3. OpenGL. Abgerufen am 4. Mai 2020.
  4. Marcel Weiher: iOS and macOS Performance Tuning: Cocoa, Cocoa Touch, Objective-C, and Swift. Addison-Wesley Professional, Feb 24, 2017, ISBN 9780133085532 (Abgerufen am 22 December 2019): „The primary graphics API Quartz and OpenGL are both immediate-mode APIs“