Практическое руководство. Создание шейдера домена
Шейдер предметной области — это третий из трех этапов, которые работают вместе для реализации тесселяции. Входные данные для этапа доменного шейдера поступают из шейдера корпуса. В этом разделе показано, как создать шейдер домена.
Шейдер предметной области преобразует геометрию поверхности (созданную этапом тесселлатора с фиксированной функцией) с помощью точек управления выходными данными шейдера корпуса, выходных данных патч-константы шейдера корпуса и единого набора координат uv тесселлатора.
Создание шейдера домена
Проектирование шейдера предметной области. См. статью Практическое руководство. Проектирование шейдера предметной области.
Скомпилируйте код шейдера.
Создайте объект шейдера домена с помощью ID3D11Device::CreateDomainShader.
HRESULT CreateDomainShader( const void *pShaderBytecode, // SIZE_T BytecodeLength, // ID3D11ClassLinkage *pClassLinkage, // ID3D11DomainShader **ppDomainShader );
Инициализируйте этап конвейера с помощью ID3D11DeviceContext::D SSetShader.
void DSSetShader( ID3D11DomainShader *pDomainShader, // ID3D11ClassInstance *const *ppClassInstances, UINT NumClassInstances );
Шейдер предметной области должен быть привязан к конвейеру, если шейдер поверхности привязан. В частности, недопустимо напрямую передавать контрольные точки шейдера корпуса с помощью геометрического шейдера.
Связанные темы