Есть ли базовый класс шейдеров? - PullRequest
0 голосов
/ 05 декабря 2018

В настоящее время я пишу подробный DirectX-11 движок на работе и работаю над секциями своего шейдера.Кажется, я не могу найти class, который является общим для всех следующих:

VertexShader
PixelShader
GeometryShader
HullShader
DomainShader
ComputeShader

Есть класс базового уровня, из которого происходят все эти типы, или я застрял с большими кускамикод для обработки каждого индивидуально?Я не смог найти никакой документации по этому вопросу.

1 Ответ

0 голосов
/ 05 декабря 2018

В DirectX 11 каждый тип шейдера представляет собой отдельный интерфейс, и функциям Direct3D, которые вы вызываете с их помощью, нужен определенный тип.

В большинстве случаев рендеринга вы все равно будете использовать только VS и PS.

Существует несколько способов создания абстракции для шейдеров.Например, в дизайне класса XNA Game Studio класс Effect включает в себя как VS, так и PS, которые вы использовали с Apply (что в абстракции действительно может быть любым этапом шейдера, необходимым дляэтот эффект рендеринга).См. это сообщение в блоге .

Технически все они являются производными от ID3D11DeviceChild, но для их использования в любом случае необходим отдельный интерфейс.

...