Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Шейдер корпуса является первым из трех этапов, которые работают вместе для реализации тесселяции. Выходные данные шейдера корпуса управляют как этапом тесселлятора, так и этапом доменного шейдера. В этом разделе показано, как создать шейдер корпуса.
Шейдер корпуса преобразует набор входных точек управления (из шейдера вершин) в набор точек управления выходными данными. Количество входных и выходных точек может отличаться в содержимом и количестве в зависимости от преобразования (типичное преобразование будет базовым преобразованием).
Шейдер оболочки также выводит постоянную информацию о патчах, такую как факторы тесселяции, для шейдера домена и тесселлятора. На стадии фиксированного функционала тесселятора используются как факторы тесселяции, так и другие параметры, объявленные в шейдере оболочки, чтобы определить, насколько тесселировать.
Создание шейдера корпуса
Проектирование шейдера корпуса. См. практическое руководство. Проектирование шейдера корпуса.
Компиляция кода шейдера
Создайте объект шейдера корпуса, используя ID3D11Device::CreateHullShader .
HRESULT CreateHullShader( const void *pShaderBytecode, SIZE_T BytecodeLength, ID3D11ClassLinkage *pClassLinkage, ID3D11HullShader **ppHullShader );
Инициализируйте этап конвейера, используя ID3D11DeviceContext::HSSetShader.
void HSSetShader( ID3D11HullShader *pHullShader, ID3D11ClassInstance *const *ppClassInstances, UINT NumClassInstances );
Шейдер домена должен быть привязан к конвейеру, если шейдер корпуса привязан. В частности, недопустимо напрямую выводить точки управления шейдера оболочки с помощью геометрического шейдера.
Связанные разделы