Практическое руководство. Инициализация этапа Tessellator
Как правило, тесселяция расширяет компактную, определяемую пользователем, модель исправления в геометрию, которая содержит программируемый объем деталей. Геометрия обычно представляет собой набор треугольников, представляющих подробную геометрию поверхности. В этом разделе показано, как инициализировать этап tessellator.
Этап тесселлатора является вторым из трех этапов, которые работают вместе для тесселла или плитки поверхности. Первый этап — это этап шейдера корпуса; он работает один раз за исправление и настраивает поведение следующего этапа (tessellator фиксированной функции). Шейдер оболочки также создает определяемые пользователем выходные данные, такие как точки управления выходом и константы исправлений, которые отправляются за тесселлатор непосредственно на третий этап, этап доменного шейдера. Шейдер предметной области вызывается один раз для каждой точки этапа тесселлатора и оценивает положения поверхности.
Этап tessellator является этапом фиксированной функции, нет шейдера для создания и не устанавливается состояние. Он получает все свое состояние установки от этапа шейдера корпуса; После инициализации этапа шейдера корпуса автоматически инициализируется этап тесселлатора.
Инициализация этапа тесселлатора
Инициализация этапа шейдера корпуса с помощью ID3D11DeviceContext::HSSetShader.
void HSSetShader( ID3D11HullShader *pHullShader, ID3D11ClassInstance *const *ppClassInstances, UINT NumClassInstances );
ppClassInstances — это указатель на массив интерфейсов шейдеров, представленный указателями ID3D11ClassInstance и количеством интерфейсов, представленных NumClassInstances. Если они не используются, для этих параметров можно задать значение NULL и 0 соответственно.
После инициализации этапа шейдера корпуса также следует инициализировать этап шейдера домена.
Связанные темы