Начало работы с 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 выполняются параллельно. Таким образом, вычислительный шейдер ведет себя больше как пруд, чем река.