我目前正在编写一个深入的DirectX-11
引擎,正在使用我的着色器部分。我似乎找不到以下所有通用的class
:
VertexShader
PixelShader
GeometryShader
HullShader
DomainShader
ComputeShader
是否存在所有这些类型都衍生自的基级类?或者我是否沉迷于大块代码中以分别处理每个类?我找不到有关此问题的任何文档。
答案 0 :(得分:1)
在DirectX 11中,每种着色器类型都是不同的接口,使用它们调用的Direct3D函数需要特定的类型。
在大多数渲染情况下,无论如何您只会使用VS和PS。
有很多方法可以创建着色器的抽象。例如,在 XNA Game Studio 类设计中,Effect
类包装了与Apply
一起使用的VS和PS(抽象上可能是该渲染效果所需的任何着色器阶段)。参见this blog post。
从技术上讲,它们都是从
ID3D11DeviceChild
派生的,但是无论如何,您都需要使用独特的接口。