【问题标题】:Is there a base Shader class?是否有基础着色器类?
【发布时间】:2018-12-05 15:12:25
【问题描述】:

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

VertexShader
PixelShader
GeometryShader
HullShader
DomainShader
ComputeShader

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

【问题讨论】:

    标签: c# shader directx-11 sharpdx


    【解决方案1】:

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

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

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

    从技术上讲,它们都源自ID3D11DeviceChild,但无论如何您都需要独特的界面才能使用它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-26
      相关资源
      最近更新 更多