stringtranslate.com

Непосредственный режим (компьютерная графика)

Немедленный режим — это шаблон проектирования API в библиотеках компьютерной графики, в котором

без использования обширной косвенной адресации – а значит, немедленной – к сохраненным ресурсам. [1] Это не исключает использования двойной буферизации .

Сохраненный режим — альтернативный подход. Исторически, сохраненный режим был доминирующим стилем в библиотеках GUI ; [2] однако, оба могут сосуществовать в одной библиотеке и не обязательно являются исключительными на практике.

Обзор

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

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

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

Примерами систем рендеринга в режиме немедленного режима являются Direct2D , [1] OpenGL [3] и Quartz . [4] Существуют некоторые графические интерфейсы пользователя в режиме немедленного режима , которые особенно подходят при использовании в сочетании с системами рендеринга в режиме немедленного режима.

Немедленный режим примитивного рендеринга

Примитивные данные атрибутов вершин могут быть вставлены кадр за кадром в буфер команд с помощью API рендеринга . Это требует значительной пропускной способности и процессорного времени (особенно если графический процессор находится на отдельной шине), но может быть выгодно для данных, динамически генерируемых ЦП . Это менее распространено с появлением все более универсальных шейдеров , с помощью которых графический процессор может генерировать все более сложные эффекты без необходимости вмешательства ЦП.

Немедленный режим рендеринга с использованием вершинных буферов

Хотя команды отрисовки приходится вводить заново для каждого нового кадра , современные системы, использующие этот метод, как правило, способны избегать ненужного дублирования более ресурсоемких данных отображения, ссылаясь на эти неизменные данные (через косвенные обращения ) (например, текстуры и буферы вершин ) в командах отрисовки.

Графический интерфейс пользователя в режиме немедленного доступа

Графические пользовательские интерфейсы традиционно используют API-дизайн в стиле сохраненного режима , [2] [5], но вместо этого GUI-интерфейсы немедленного режима используют API-дизайн в стиле немедленного режима, в котором пользовательский код напрямую указывает элементы GUI для рисования в цикле пользовательского ввода. Например, вместо функции CreateButton(), которую пользователь мог бы вызвать один раз для создания экземпляра кнопки, API GUI немедленного режима может иметь функцию DoButton(), которая должна вызываться всякий раз, когда кнопка должна быть на экране. [6] [5] Этот метод был разработан Кейси Муратори в 2002 году. [6] [5]

Смотрите также

Ссылки

  1. ^ ab Quinn Radich (30 мая 2018 г.). "Retained Mode Versus Immediate Mode". Win32 apps . Microsoft . Получено 21 декабря 2019 г. .
  2. ^ ab Feldmeier, Alex (12 октября 2013 г.). "Программирование графического интерфейса". Технический отчет UWP Computer Science and Software Engineering . Получено 22 декабря 2019 г. Режим сохранения был стандартом в течение многих лет. Почти каждый графический интерфейс находится в режиме сохранения.[ постоянная мертвая ссылка ]
  3. ^ "OpenGL" . Получено 4 мая 2020 г. .
  4. ^ Weiher, Marcel (24 февраля 2017 г.). Настройка производительности iOS и macOS: Cocoa, Cocoa Touch, Objective-C и Swift. Addison-Wesley Professional. ISBN 9780133085532. Получено 22 декабря 2019 г. . Основные графические API Quartz и OpenGL являются API немедленного режима
  5. ^ abc Барретт, Шон (сентябрь 2005 г.). «Immediate Mode GUIs» (PDF) . Game Developer . Vol. 12. pp. 34–36 . Получено 14 февраля 2021 г. .
  6. ^ ab "Графические пользовательские интерфейсы непосредственного режима (2005)". Графические пользовательские интерфейсы непосредственного режима (2005) . Получено 2021-06-15 .