Пошаговые руководства по коду D3D12
В этом разделе представлен код для примеров сценариев. Многие из пошагов содержат сведения о том, какое кодирование необходимо добавить в базовый пример, чтобы избежать повторения базового кода компонента для каждого сценария.
Самый простой компонент см. в разделе Создание базового компонента Direct3D 12 . В следующих пошаговых руководствах описаны более сложные сценарии.
В этом разделе
Раздел | Описание |
---|---|
D2D и D3D11on12 |
В примере D3D1211on12 показано, как отображать содержимое D2D поверх содержимого D3D12 путем совместного использования ресурсов между 11 и 12 устройствами. |
Моделирование гравитации для нескольких тел в нескольких движках |
В примере D3D12nBodyGravity показано, как выполнять вычислительные операции асинхронно. Пример запускает несколько потоков с очередью команд вычислений и планирует вычислительные работы на GPU, который выполняет имитацию гравитации n-тела. Каждый поток работает с двумя буферами, полными данных о положении и скорости. При каждой итерации шейдер вычислений считывает данные о текущем положении и скорости из одного буфера и записывает следующую итерацию в другой буфер. После завершения итерации вычислительный шейдер переключает буфер SRV для чтения данных о положении и скорости, а какой — для записи обновлений положения или скорости путем изменения состояния ресурсов в каждом буфере. |
Запросы предикации |
Пример D3D12PredicationQueries демонстрирует отбраковку окклюзии с помощью кучи запросов DirectX 12 и предикаций. В этом пошаговом руководстве описывается дополнительный код, необходимый для расширения примера HelloConstBuffer для обработки запросов предикаций. |
Динамическое индексирование с помощью HLSL 5.1 |
Пример D3D12DynamicIndexing демонстрирует некоторые новые функции HLSL, доступные в модели шейдеров 5.1, в частности динамическое индексирование и неограниченные массивы, для многократной отрисовки одной и той же сетки, каждый раз отрисовки с динамически выбранным материалом. Благодаря динамическому индексации шейдеры теперь могут индексироваться в массиве, не зная значения индекса во время компиляции. В сочетании с неограниченными массивами это добавляет еще один уровень косвенности и гибкости для авторов шейдеров и конвейеров искусства. |
Косвенная прорисовка и отбрасывание с помощью GPU |
В примере D3D12ExecuteIndirect показано, как использовать косвенные команды для рисования содержимого. В нем также показано, как этими командами можно управлять на GPU в вычислительном шейдере перед их выполнением. |