有基础Shaderclass吗?

Is there a base Shader class?

我目前正在编写一个深入的 DirectX-11 引擎,并且正在处理我的着色器部分。我似乎找不到以下所有项共有的 class

VertexShader
PixelShader
GeometryShader
HullShader
DomainShader
ComputeShader

是否存在所有这些类型都派生自的基本级别 class,或者我是否需要大量代码来单独处理每个类型?我找不到关于这个问题的任何文档。

在 DirectX 11 中,每个着色器类型都是一个不同的接口,您使用它们调用的 Direct3D 函数需要特定的类型。

在大多数渲染情况下,您将只使用 VS 和 PS 无论如何。

有多种方法可以为着色器创建抽象。例如,在 XNA Game Studio class 设计中,Effect class 包含了一个 VS 和一个 PS与 Apply 一起使用(在抽象中实际上可以是该渲染效果所需的任何着色器阶段)。参见 this blog post

Technically they are all derived from ID3D11DeviceChild but you need the distinct interface anyhow to use them.