Поделиться через


Устройства Direct3D (Direct3D 9)

Устройство Direct3D — это компонент Direct3D, выполняющий отрисовку графики. Он инкапсулирует и сохраняет состояние отрисовки. Кроме того, устройство Direct3D выполняет операции преобразования и освещения, а также растеризует изображение на поверхность.

С точки зрения архитектуры, устройства Direct3D содержат модули преобразования, освещения и растеризации, как показано на следующей схеме.

схема архитектуры устройства direct3d

В настоящее время Direct3D поддерживает два main типа устройств Direct3D:

  • Устройство слоя HAL с аппаратным ускорением растеризации и заливки с аппаратной и программной обработкой вершин
  • Эталонное устройство

Эти устройства можно рассматривать как два отдельных драйвера. Программные и эталонные устройства представлены программными драйверами, а устройство слоя HAL — драйвером оборудования. Самый распространенный способ применения этих устройств заключается в использовании устройства слоя HAL для приложений доставки, а эталонное устройство — для тестирования компонентов. Эти устройства предоставляются сторонними производителями для эмуляции определенных устройств, например еще не выпущенного оборудования для разработки.

Созданное приложением устройство Direct3D должно соответствовать возможностям оборудования, на котором запущено приложение. Direct3D предоставляет возможности отрисовки путем использования установленного в компьютере оборудования для работы с трехмерной графикой или эмуляции возможностей такого оборудования программными средствами. Таким образом, Direct3D предоставляет устройства как для аппаратного доступа, так и для программной эмуляции.

Устройства с аппаратным ускорением работают намного эффективнее, чем программные устройства. Тип устройства слоя HAL доступен на всех видеоадаптерах с поддержкой Direct3D. В большинстве случаев приложения предназначены для компьютеров с аппаратным ускорением, а для поддержки менее мощных компьютеров используется программная эмуляция.

За исключением эталонного устройства, программные устройства не всегда поддерживают те же возможности, что и аппаратные устройства. Приложения всегда должны запрашивать возможности устройств, чтобы определить, какие возможности поддерживаются.

Поскольку поведение программных и эталонных устройств с Direct3D 9 идентично поведению устройства слоя HAL, код приложения, предназначенный для работы с устройством слоя HAL, будет совместим с программными или эталонными устройствами без изменений. Обратите внимание, что хотя поведение предоставленного программного обеспечения или эталонного устройства идентично поведению устройства hal, возможности устройства различаются, и конкретное программное устройство может реализовать гораздо меньший набор возможностей.

Расширения функциональности

Direct3D позволяет указать поведение устройства, а также тип устройства. Метод IDirect3D9::CreateDevice позволяет использовать сочетание одного или нескольких флагов поведения для управления глобальным поведением устройства Direct3D. Эти реакции указывают, что поддерживается и не поддерживается в части Direct3D во время выполнения, а типы устройств указывают, какой драйвер следует использовать. Хотя некоторые сочетания поведения устройств являются недопустимыми, можно использовать все поведения устройств со всеми типами устройств. Например, можно указать D3DDEVTYPE_SW на устройстве, созданном с помощью D3DCREATE_PUREDEVICE.

Начало работы