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

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

Что такое Direct3D?

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

Direct3D:

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

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

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

  • Если вы хотите написать приложение UWP, используйте подмножество API Direct3D 11, DXGI и HLSL. Список этих API см. в API Win32 и COM для приложений UWP. Чтобы узнать, как создать приложение Магазина Windows с использованием Direct3D 11, см. статью Создание трехмерной графики с помощью 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 и более поздних версий. Только оборудование с поддержкой Direct3D уровня 10 и более поздних версий поддерживает API 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 выполняются параллельно. Так вычислительный шейдер ведет себя скорее как пруд, чем как река.