Retained Mode
# Retained Mode

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

* die zu rendernde Szene (das komplette Objektmodell der grafischen Primitive) im Speicherbereich der Grafikbibliothek statt im Speicherbereich des Clients gespeichert wird und wo
* die Client-Aufrufe in die Grafikbibliothek nicht direkt das Rendern von Grafikobjekten auf dem Bildschirm bewirken

sondern umfangreiche Umleitungen auf die durch die Grafikbibliothek verwalteten - also gespeicherten - Ressourcen nutzen. Das schließt die Verwendung von Doppelpufferung nicht aus.

Der Immediate 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 schließen einander in der Praxis nicht unbedingt aus.

## Übersicht

Im Retained Mode bewirken Client-Aufrufe in die Grafikbibliothek kein unmittelbares rendern, sondern aktualisieren stattdessen ein abstraktes internes Modell (typischerweise eine Liste von Objekten), das im Speicherbereich der Grafikbibliothek verwaltet wird. Dadurch kann die Bibliothek das tatsächliche Rendern zusammen mit der Verarbeitung von verbundenen Objekten optimieren.

Einige Techniken zur Optimierung des Renderings sind:

* Verwalten der Doppelpufferung
* Behandlung des Sichtbarkeitsproblems durch Backface Culling/Entfernen verdeckter Objekte (Z-Buffering)
* Übertragen nur der Daten vom Client in die Grafikbibliothek, die sich von einem Bild zum Nächsten geändert haben

Ein Beispiel für die Koexistenz mit dem Immediate Mode in derselben Grafikbibliothek ist OpenGL. OpenGL verfügt über Immediate-Mode-Funktionen, die zuvor definierte serverseitige Objekte (Texturen, Vertexpuffer und Indexpuffer, Shader usw.) verwenden können, ohne dass unveränderte Daten erneut vom Client an die Grafikbibliothek gesendet werden.

Beispiele für Rendering-Systeme mit Retained Mode sind Windows Presentation Foundation, SceneKit im macOS, und PHIGS.

Es gibt ein weiteres bedeutendes Entwurfsmuster für die Programmierschnittstelle (API) in Grafikbibliotheken – den Immediate Mode.

