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


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

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

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

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

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

  • Устройство hal с аппаратно-ускоренной растеризацией и заливкой с помощью аппаратной и программной обработки вершин
  • Эталонное устройство

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

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

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

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

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

Поведения

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

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