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


Обработка кодов шейдеров

Драйвер отображения в пользовательском режиме использует объявления вершин и токены в каждом отдельном коде шейдера пикселя и шейдера вершин, чтобы программировать сборщики шейдеров.

Драйвер отображения в пользовательском режиме получает код шейдера вершин и пикселей, когда среда выполнения Microsoft Direct3D вызывает функции CreateVertexShaderFunc драйвера и CreatePixelShader соответственно. Драйвер отображения в пользовательском режиме получает объявления вершин, когда функция драйвера CreateVertexShaderDecl вызывается во время выполнения. Объявления вершин состоят из массивов структур D3DDDIVERTEXELEMENT. Драйвер отображения пользовательского режима преобразует код шейдера и объявления вершинных шейдеров в аппаратный формат и связывает код шейдера и объявления с дескриптором и объявлениями. Среда выполнения использует созданные дескрипторы в вызовах SetVertexShaderDecl, SetVertexShaderFunc и SetPixelShader для установки объявления шейдера вершин, а также шейдера вершин и шейдера пикселей, так что все последующие операции рисования будут использовать их.

Дополнительные сведения о формате отдельного кода шейдера и маркерах, составляющих каждый код шейдера, см. в разделе "Коды шейдеров Direct3D".

Заметка Когда приложение создает шейдеры вершин, шейдеры пикселей и объявления вершин, код шейдера и объявление для каждого заканчивается конечным маркером. Когда среда выполнения Direct3D, в свою очередь, передает запросы на создание шейдера вершин и пикселей в драйвер отображения пользовательского режима, код вершины и шейдера пикселей, сопровождающий запросы конечными маркерами. Однако, когда среда выполнения передает запросы на создание объявления вершин, объявления вершин, сопровождающие запросы, не заканчиваются конечными маркерами.