Immediate Mode (Computergrafik)
# Immediate Mode (Computergrafik)

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

* die Client-Aufrufe direkt das Rendern von Grafikobjekten auf dem Bildschirm bewirken oder wo
* die Daten zur Beschreibung von grafischen Primitiven (im Falle eines Renderns von grafischen Primitiven im immediate mode) vom Client jeweils Bild für Bild direkt in eine Grafikpipeline eingefügt werden,

ohne Nutzung – also unmittelbar - umfangreicher Umleitungen auf gespeicherte Ressourcen. 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); jedoch können beide Modi auch in ein und derselben Programmbibliothek koexistieren und sind in der Praxis nicht unbedingt einander ausschließend.

## Übersicht

Im Immediate Mode wird die Szene (Liste der grafischen Objekte, die gerendert werden sollen) im Speicherbereich des Clients statt der Grafikbibliothek gespeichert. 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.

Beispiele für Immediate-Mode-Rendering-Systeme sind Direct2D, OpenGL and Quartz. 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).

