Jump to content

Список отображения

Список отображения , также называемый списком команд в Direct3D 12 и буфером команд в Vulkan , представляет собой серию графических команд, которые могут быть запущены позже при выполнении списка. [1] Системы, в которых используется функциональность списка отображения, называются системами с сохраненным режимом , а системы, которые этого не делают, называются системами с немедленным режимом . В OpenGL списки отображения полезны для перерисовки одной и той же геометрии или многократного применения набора изменений состояния. [2] [3] Это преимущество также используется со списками команд пакета Direct3D 12. В Direct3D 12 и Vulkan списки отображения регулярно используются для покадровой записи и выполнения.

Появления в списке отображения функций [ править ]

Одной из первых систем с настоящим списком отображения были 8-битные компьютеры Atari . Список отображения (на самом деле так называемый в терминологии Atari) представляет собой серию инструкций для ANTIC , видеосопроцессора, используемого в этих машинах. Эта программа, хранящаяся в памяти компьютера и выполняемая ANTIC в режиме реального времени, может указывать пустые строки, любой из шести текстовых режимов и восьми графических режимов, какие части экрана можно прокручивать с тонкой прокруткой по горизонтали или вертикали, а также запускать список отображения. Прерывания (называемые растровыми прерываниями или HBI в других системах). [4]

Семейство Amstrad PCW содержит функцию списка отображения, называемую «Roller RAM». Это 512-байтовая область ОЗУ, состоящая из 256 16-битных векторов в ОЗУ, по одному на каждую строку дисплея разрешением 720×256 пикселей. Каждый вектор определяет расположение 90 байт монохромных пикселей, которые содержат 720 состояний пикселей строки. 90 байтов 8 состояний пикселей расположены с интервалом в 8 байт, поэтому между каждым байтом данных пикселей имеется 7 неиспользуемых байтов. Это соответствует тому, как текстово-ориентированный PCW создает типичный экранный буфер в оперативной памяти, где 8 строк первого символа хранятся в первых 8 байтах, строки второго символа - в следующих 8 байтах и ​​так далее. Roller RAM был реализован для ускорения прокрутки дисплея, поскольку для Z80 с частотой 3,4 МГц было бы неприемлемо медленно перемещать буфер дисплея размером 23 КБ «вручную», то есть программно. Стартовая запись Roller RAM, используемая в начале обновления экрана, управляется записываемым регистром ввода-вывода Z80. Следовательно, экран можно прокручивать, просто изменяя этот регистр ввода-вывода. [ нужна ссылка ]

Другая система, использующая аппаратную функцию, подобную списку отображения, — это Amiga , которая, не случайно, также была разработана теми же людьми, которые разработали специальное оборудование для 8-битных компьютеров Atari. Получив указание создать режим отображения, он будет продолжать делать это автоматически для каждой следующей строки сканирования. Компьютер также включал специальный сопроцессор под названием « Copper », который запускал простую программу или «Copper List», предназначенную для изменения аппаратных регистров синхронно с дисплеем. Инструкции Copper List могут предписать Copper ждать, пока дисплей достигнет определенной позиции на экране, а затем изменить содержимое аппаратных регистров. По сути, это был процессор, предназначенный для обслуживания растровых прерываний . Copper использовался Workbench для смешивания нескольких режимов отображения (несколько разрешений и цветовых палитр на мониторе одновременно), а также в многочисленных программах для создания эффектов радуги и градиента на экране. Amiga Copper также была способна перенастраивать средний кадр движка спрайтов с задержкой всего в одну строку сканирования. Это позволяло Amiga рисовать более 8 своих аппаратных спрайтов, при условии, что дополнительные спрайты не имели общих строк развертки (или одного разрыва в строке развертки) с более чем 7 другими спрайтами. то есть, пока хотя бы один спрайт закончил отрисовку, под ним на экране можно было добавить другой спрайт. Кроме того, более поздний 32-битный набор микросхем AGA позволял рисовать спрайты большего размера (больше пикселей в строке), сохраняя при этом то же мультиплексирование. У Amiga также было специальное оборудование для сдвига блоков («блиттер»), которое могло помещать более крупные объекты в кадровый буфер. Это часто использовалось вместо спрайтов или в дополнение к ним. [ нужна ссылка ]

В более примитивных системах результаты списка отображения могут быть смоделированы, хотя и за счет интенсивной записи ЦП в определенные режимы отображения, управления цветом или других регистров визуальных эффектов в видеоустройстве, а не за серию выполняемых команд рендеринга. устройством. Таким образом, необходимо создать отображаемое изображение, используя какой-либо другой процесс рендеринга, либо до, либо во время выполнения генерации дисплея, управляемой ЦП. Во многих случаях изображение также модифицируется или перерисовывается между кадрами . Затем изображение отображается различными способами, в зависимости от того, каким именно образом реализован код отображения, управляемый ЦП. [ нужна ссылка ]

Commodore 64/128 Примеры результатов, возможных на этих старых машинах, требующих видео, управляемого ЦП, включают такие эффекты, как режим FLI или обработка Rainbow на ZX Spectrum. [ нужна ссылка ]

Использование в OpenGL [ править ]

Чтобы разграничить список отображения, glNewList и glEndList используются функции, а для выполнения списка используется glCallList используется функция. Почти все команды рендеринга, возникающие между вызовами функций, сохраняются в списке отображения. Команды, влияющие на состояние клиента, не сохраняются в списках отображения. [5] Списки отображения называются целочисленными значениями, и создание списка отображения с тем же именем, что и уже созданный, переопределяет первый. [6]

The glNewList Функция ожидает два аргумента: целое число, представляющее имя списка, и перечисление для режима компиляции. Два режима включают в себя GL_COMPILE_AND_EXECUTE, который компилируется и немедленно выполняется, и GL_COMPILE, который только компилирует список. [7]

Списки отображения позволяют использовать шаблон рендеринга в режиме сохранения , который представляет собой систему, в которой графические команды записываются (сохраняются) для последовательного выполнения в более позднее время. Это противоречит немедленному режиму , в котором графические команды немедленно выполняются при вызове клиента. [8]

Использование в Direct3D 12 [ править ]

Списки команд создаются с помощью ID3D12Device::CreateCommandList или ID3D12Device4::CreateCommandList1 функции. [9] Списки команд могут быть созданы в нескольких типах: прямые, групповые, вычислительные, копирующие, декодирование видео, обработка видео и кодирование видео. Списки прямых команд указывают, что список команд может выполнять графический процессор и не наследует никакого состояния графического процессора. [10] Пакеты лучше всего использовать для хранения и выполнения небольших наборов команд любое количество раз. Это используется иначе, чем обычные списки команд, где команды, хранящиеся в списке команд, обычно выполняются только один раз. [9] Списки команд вычислений используются для общих вычислений, обычно для расчета MIP-карт . [11] Список команд копирования предназначен исключительно для копирования, а списки команд декодирования видео и обработки видео предназначены для декодирования и обработки видео соответственно. [10]

После создания списки команд находятся в состоянии записи. Списки команд можно использовать повторно, вызвав ID3D12GraphicsCommandList::Reset функция. После записи команд список команд необходимо вывести из состояния записи, вызвав ID3D12GraphicsCommandList::Close. Список команд затем выполняется путем вызова ID3D12CommandQueue::ExecuteCommandLists. [9]

Устаревание [ править ]

Списки отображения в значительной степени устарели в современных графических архитектурах, поскольку они представляют собой набор команд в графическом конвейере с фиксированными функциями . Современные архитектуры используют шейдеры и объекты буфера вершин , чтобы избежать привязки производительности графики к процессору. Из-за особенностей списка отображения он должен копировать каждую команду и ее данные, что может быть проблемой для определенных сред, где не хватает памяти, и в целом может быть неэффективно. [5] Однако в Vulkan и Direct3D 12 по-прежнему практикуются функции отображения списков в виде буферов команд и списков команд.

См. также [ править ]

Ссылки [ править ]

  1. ^ «Глава 7 — Руководство по программированию OpenGL» . www.glprogramming.com . Аддисон-Везели . Проверено 18 ноября 2018 г.
  2. ^ Руководство по программированию OpenGL: официальное руководство по изучению OpenGL, версия 1.1 (2-е изд.). Эддисон Уэсли. 1997. ISBN  978-0201461381 .
  3. ^ Марк Сигал, Курт Экли, Дизайн графического интерфейса OpenGL. http://www.graphics.stanford.edu/courses/cs448a-01-fall/design_opengl.pdf
  4. ^ Смолл, Дэвид; Маленький, Сэнди; Бланк, Джордж (1983). Креативная Атари . ISBN  978-0-916688-34-9 .
  5. Перейти обратно: Перейти обратно: а б Марц, Пол (2006). OpenGL Distilled (1-е изд.). Аддисон-Уэсли Профессиональный PTG. ISBN  9780132701785 . Проверено 28 декабря 2023 г.
  6. ^ Райт, Ричард С.; Хаемель, Николас; Селлерс, Грэм; Липчак, Бенджамин (2010). OpenGL SuperBible: комплексное руководство и справочник (5-е изд.). Аддисон-Уэсли Профессионал. ISBN  978-0-321-71261-5 .
  7. ^ Уайт, Стив (09 марта 2021 г.). «функция glNewList (Gl.h) — приложения Win32» . Learn.microsoft.com . Проверено 28 декабря 2023 г.
  8. ^ Куинн Радич (30 мая 2018 г.). «Сохраненный режим и немедленный режим» . Win32-приложения . Майкрософт . Проверено 21 декабря 2019 г.
  9. Перейти обратно: Перейти обратно: а б с Уайт, Стивен; Дженкс, Альма; бадасахог; Коултер, Дэвид; Келли, Джон; Кинросс, Остин; Венцель, Майра; Джейкобс, Майк; Сатран, Майкл (30 декабря 2021 г.). «Создание и запись списков команд и пакетов — приложения Win32» . Learn.microsoft.com . Проверено 5 января 2024 г.
  10. Перейти обратно: Перейти обратно: а б Уайт, Стив (14 февраля 2023 г.). «D3D12_COMMAND_LIST_TYPE (d3d12.h) — приложения Win32» . Learn.microsoft.com . Проверено 6 января 2024 г.
  11. ^ Логджини, Риккардо (31 октября 2020 г.). «Вычислительные шейдеры в D3D12» . Риккардо Логджини . Проверено 6 января 2024 г.

Дальнейшее чтение [ править ]

  • Уайт, Стивен; Дэниэлссон, Дэвид; Дженкс, Альма; Сатран, Майкл (08 марта 2023 г.). «Философия проектирования очередей команд и списков команд — приложений Win32». Learn.microsoft.com . Проверено 26 января 2024 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 9019294fe319e0bb664c5581b3f73b0e__1718659620
URL1:https://arc.ask3.ru/arc/aa/90/0e/9019294fe319e0bb664c5581b3f73b0e.html
Заголовок, (Title) документа по адресу, URL1:
Display list - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)