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.[1] 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)[2]; jedoch können beide Modi auch in ein und derselben Programmbibliothek koexistieren und schließen einander in der Praxis nicht unbedingt aus.
Übersicht
[Bearbeiten | Quelltext bearbeiten]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.[1]
Einige Techniken zur Optimierung des Renderings sind:
- Verwalten der Doppelpufferung[3][4]
- Behandlung des Sichtbarkeitsproblems durch Backface Culling[5]/Entfernen verdeckter Objekte (Z-Buffering)[6]
- Ü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[7]. 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[1], SceneKit im macOS[8], und PHIGS.
Es gibt ein weiteres bedeutendes Entwurfsmuster für die Programmierschnittstelle (API) in Grafikbibliotheken – den Immediate Mode.
Siehe auch
[Bearbeiten | Quelltext bearbeiten]Einzelnachweise
[Bearbeiten | Quelltext bearbeiten]- ↑ a b c Quinn Radich: Retained Mode Versus Immediate Mode. In: Win32 apps. Microsoft, 30. Mai 2018, abgerufen am 21. Dezember 2019.
- ↑ 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.“
- ↑ OpenGL double buffering. Abgerufen am 7. Mai 2020.
- ↑ DirectX double buffering. Abgerufen am 7. Mai 2020.
- ↑ OpenGL face culling. Abgerufen am 7. Mai 2020.
- ↑ DirectX occlusion culling. Abgerufen am 7. Mai 2020.
- ↑ OpenGL. Abgerufen am 4. Mai 2020.
- ↑ Marcel Weiher: iOS and macOS Performance Tuning: Cocoa, Cocoa Touch, Objective-C, and Swift. Addison-Wesley Professional, 2017, ISBN 978-0-13-308553-2 (google.com [abgerufen am 22. Dezember 2019]): „SceneKit and SpriteKit on the other hand are retained-mode APIs“