Сохранённый режим (Vk]jgu~uudw jy'nb)

Перейти к навигации Перейти к поиску
Схематическое объяснение сохранённого режима графического API

Сохранённый режим в компьютерной графике — это основной шаблон проектирования API в графических библиотеках[1], в котором:

Альтернативный подход — это немедленный режим[англ.]. Исторически сложилось так, что сохранённый режим был доминирующим стилем в в библиотеках с графическим интерфейсом[4], однако оба могут сосуществовать в одной библиотеке и на практике не обязательно исключают друг друга.

Схематическое объяснение немедленного режима графического API

В сохранённом режиме клиентские вызовы напрямую не вызывают фактический рендеринг, но вместо этого обновляют абстрактную внутреннюю модель (обычно список объектов), которая поддерживается в пространстве данных библиотеки. Это позволяет библиотеке оптимизировать процесс фактического рендеринга наряду с обработкой связанных объектов[2].

Некоторые методы оптимизации рендеринга включают в себя:

Примером сосуществования сохранённого режима с немедленным режимом в одной и той же библиотеке является OpenGL[9]. OpenGL имеет функции немедленного режима, которые могут использовать ранее определённые серверные объекты (текстуры, вершинные и индексные буферы, шейдеры и т. д.) без повторной отправки неизмененных данных[10][11].

Примерами систем рендеринга в сохранённом режиме являются Windows Presentation Foundation[2], SceneKit[англ.] на macOS[12], и PHIGS[англ.].

Примечания

[править | править код]
  1. Jin, Zhefan. Retained-Mode Parallel Graphics Rendering for Cooperative Design Environments // 2006 10th International Conference on Computer Supported Cooperative Work in Design : [англ.]. — May 2006. — P. 1–6. — ISBN 1-4244-0164-X. — doi:10.1109/CSCWD.2006.253142.
  2. 1 2 3 Quinn Radich. Retained Mode Versus Immediate Mode (англ.). Win32 apps. Microsoft (30 мая 2018). Дата обращения: 21 декабря 2019.
  3. stevewhims Predication queries - Win32 apps (англ.). learn.microsoft.com. Дата обращения: 9 декабря 2022.
  4. Feldmeier, Alex GUI Programming (англ.). UWP Computer Science and Software Engineering Technical Report (12 октября 2013). — «Retained mode has been the standard for years. Just about every GUI is in retained mode.» Дата обращения: 22 декабря 2019.
  5. OpenGL double buffering (англ.). Дата обращения: 7 мая 2020.
  6. DirectX double buffering (англ.). Дата обращения: 7 мая 2020.
  7. OpenGL face culling (англ.). Дата обращения: 7 мая 2020.
  8. DirectX occlusion culling (англ.). Дата обращения: 7 мая 2020.
  9. OpenGL (англ.). Дата обращения: 4 мая 2020.
  10. OpenGL Driver Support (англ.). NVIDIA Developer (19 августа 2013). Дата обращения: 21 августа 2020.
  11. OpenGL - The Industry's Foundation for High Performance Graphics (англ.). The Khronos Group (19 июля 2011). Дата обращения: 21 августа 2020.
  12. Weiher, Marcel. iOS and macOS Performance Tuning: Cocoa, Cocoa Touch, Objective-C, and Swift : [англ.]. — Addison-Wesley Professional, Feb 24, 2017. — «SceneKit and SpriteKit on the other hand are retained-mode APIs». — ISBN 9780133085532.