Немедленный режим (компьютерная графика)
Эта статья нуждается в дополнительных цитатах для проверки . ( декабрь 2019 г. ) |
Немедленный режим — это шаблон проектирования API в библиотеках компьютерной графики, в котором
- непосредственно вызовы клиента вызывают рендеринг графических объектов на дисплее или при котором
- данные для описания примитивов рендеринга вставляются покадрово непосредственно от клиента в список команд (в случае рендеринга примитивов немедленного режима ),
без использования обширного косвенного воздействия – а значит, немедленного – на сохраненные ресурсы. [1] Это не исключает использования двойной буферизации .
Сохраненный режим является альтернативным подходом. Исторически сложилось так, что сохраняемый режим был доминирующим стилем в графического интерфейса ; библиотеках [2] однако оба могут сосуществовать в одной библиотеке и на практике не обязательно являются исключительными.
Обзор
[ редактировать ]немедленном режиме сцена (полная объектная модель ) примитивов рендеринга сохраняется в пространстве памяти клиента В , а не в графической библиотеке . Это означает, что в приложении немедленного режима списки отображаемых графических объектов хранятся у клиента и не сохраняются API графической библиотеки. Приложение должно повторно выдавать все команды рисования, необходимые для описания всей сцены, каждый раз, когда новый кадр требуется , независимо от фактических изменений. Этот метод, с одной стороны, обеспечивает максимальный контроль и гибкость прикладной программы, но, с другой стороны, он также создает постоянную рабочую нагрузку на ЦП .
Примеры систем рендеринга в немедленном режиме включают Direct2D , [1] OpenGL [3] и Кварц . [4] Существуют некоторые графические интерфейсы пользовательского интерфейса немедленного режима , которые особенно подходят при использовании в сочетании с системами рендеринга немедленного режима.
Примитивный рендеринг в немедленном режиме
[ редактировать ]Данные атрибутов примитивных вершин могут быть вставлены кадр за кадром в командный буфер с помощью API рендеринга . Это требует значительной пропускной способности и времени процессора (особенно, если графический процессор подключен к отдельной шине), но может быть полезным для данных, динамически генерируемых ЦП . Это менее распространено с появлением все более универсальных шейдеров , с помощью которых графический процессор может генерировать все более сложные эффекты без необходимости вмешательства ЦП.
Немедленный рендеринг с использованием буферов вершин
[ редактировать ]Хотя команды рисования необходимо повторно выдавать для каждого нового кадра , современные системы, использующие этот метод, обычно могут избежать ненужного дублирования более требовательных к памяти данных отображения, обращаясь к этим неизменным данным (посредством косвенного обращения ) (например, текстуры и буферы вершин ). ) в командах рисования.
Графический интерфейс немедленного режима
[ редактировать ]Графические пользовательские интерфейсы традиционно используют сохраняемого режима . дизайн API в стиле [2] [5] но графические интерфейсы немедленного режима вместо этого используют дизайн API в стиле немедленного режима, в котором пользовательский код напрямую определяет элементы графического интерфейса для рисования в цикле пользовательского ввода. Например, вместо функции CreateButton(), которую пользователь будет вызывать один раз для создания экземпляра кнопки, API графического интерфейса немедленного режима может иметь функцию DoButton(), которую следует вызывать всякий раз, когда кнопка должна быть на экране. [6] [5] Методика была разработана Кейси Муратори в 2002 году. [6] [5]
См. также
[ редактировать ]- Список отображения
- Сохраненный режим , обычно контрастирующий с немедленным режимом.
- График сцены
Ссылки
[ редактировать ]- ^ Jump up to: а б Куинн Радич (30 мая 2018 г.). «Сохраненный режим и немедленный режим» . Win32-приложения . Майкрософт . Проверено 21 декабря 2019 г.
- ^ Jump up to: а б Фельдмайер, Алекс (12 октября 2013 г.). «Программирование графического интерфейса» . Технический отчет UWP по информатике и программной инженерии . Проверено 22 декабря 2019 г.
Сохраненный режим уже много лет является стандартом. Почти каждый графический интерфейс находится в сохраненном режиме.
[ постоянная мертвая ссылка ] - ^ «ОпенГЛ» . Проверено 4 мая 2020 г.
- ^ Вейхер, Марсель (24 февраля 2017 г.). Настройка производительности iOS и macOS: Cocoa, Cocoa Touch, Objective-C и Swift . Аддисон-Уэсли Профессионал. ISBN 9780133085532 . Проверено 22 декабря 2019 г.
Основные графические API Quartz и OpenGL являются API немедленного режима.
- ^ Jump up to: а б с Барретт, Шон (сентябрь 2005 г.). «Графический интерфейс немедленного режима» (PDF) . Разработчик игры . Том. 12. С. 34–36 . Проверено 14 февраля 2021 г.
- ^ Jump up to: а б «Графические пользовательские интерфейсы немедленного режима (2005)» . Графические пользовательские интерфейсы немедленного режима (2005) . Проверено 15 июня 2021 г.