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

Direct3D — это низкоуровневый API для рисования примитивов с помощью конвейера отрисовки или для выполнения параллельных операций с помощью шейдера вычислений.

Что такое Direct3D?

Direct3D — это низкоуровневый API, который можно использовать для рисования треугольников, линий или точек на кадре, а также для запуска операций с высокой степенью параллелизма на GPU.

Direct3d:

  • Скрывает различные реализации GPU за согласованной абстракцией. Но вам все равно нужно знать, как рисовать трехмерную графику.
  • Предназначен для управления отдельным графическим процессором. Новые GPU имеют сотни или тысячи параллельных процессоров.
  • Подчеркивает параллельную обработку. Вы настраиваете множество состояний отрисовки или вычислений, а затем запускаете операцию. Вы не ждете немедленной обратной связи от операции. Вы не смешиваете операции ЦП и GPU.

Какие API Direct3D можно использовать?

Выбранные API Direct3D зависят от стиля приложения, которое вы хотите написать.

  • Если вы хотите написать приложение UWP, используйте подмножество API Direct3D 11, DXGI и HLSL. Список этих API см. в статье Api Win32 и COM для приложений UWP. Сведения о создании приложения Direct3D 11 из Магазина Windows см. в статье Создание трехмерной графики с помощью DirectX.
  • При написании классического приложения можно использовать полный набор API Direct3D 11, DXGI и HLSL.
  • Начиная с Windows 8, мы больше не поддерживаем платформу XNA для классических приложений. Но приложения Магазина Windows, приложения UWP и классические приложения могут использовать полный набор API XAudio2 и DirectXMath . Классические приложения могут использовать полный набор API XInput , в то время как приложения Магазина Windows и приложения UWP могут использовать большинство API XInput; Дополнительные сведения см. в разделе Версии XInput.

Какая версия Direct3D?

Выбранная версия API Direct3D зависит от операционной системы и уровня оборудования, на который вы хотите ориентироваться.

  • Если вы хотите использовать Windows 8 и более поздних версий, используйте API Direct3D 11.
  • Используйте API Direct3D 9 в Windows XP и более поздних версий. Все оборудование поддерживает API Direct3D 9, даже более новое оборудование Уровня Direct3D 11.
  • Используйте API Direct3D 10 с Windows Vista и более поздних версий. Api Direct3D 10 поддерживает только оборудование Direct3D 10 и более поздних версий.
  • Используйте API Direct3D 10.1 и Direct3D 11 в Windows 7 и более поздних версий. Api Direct3D 10.1 и Direct3D 11 также можно использовать в Windows Vista с пакетом обновления 2 (SP2).

Конвейер отрисовки Direct3D

В конвейере отрисовки Direct3D данные поступают из нескольких источников, таких как притоки реки.

  • Некоторые части потока программируются.
  • Некоторые части имеют ручки и циферблаты.
  • Источниками данных являются либо последовательные потоки пакетов (вершины), либо индексируемые массивы (ресурсы шейдера).
  • Вершины и ресурсы шейдеров перетекают в примитивы, которые можно усилить.
  • Примитивы и ресурсы шейдеров передаются в пиксельные операции.

Шейдер вычислений Direct3D

При использовании шейдера вычислений Direct3D все процессоры GPU выполняются параллельно. Таким образом, вычислительный шейдер ведет себя больше как пруд, чем река.