使用 DirectX 11 API 阅读 HLSL 语义和注释?

Reading HLSL semantics & annonations with DirectX 11 API?

我有一个着色器(在 .fx 文件中)有类似的部分(使用 SAS):

cbuffer UpdatePerObject : register(b1)
{
    float4x4 worldViewIT : WorldViewInverseTranspose < string UIWidget = "MyName"; >;
    float4x4 world : World < string UIWidget = "None"; >;
};

我正在使用 DirectX 11,我的程序是用 C++ 编写的。

不同的着色器需要不同的矩阵、纹理等。我想根据它们的语义和注释将它们设置为那些着色器。

我可以通过简单地手动解析 .fx 文件并寻找 : ... <...> 模式来做到这一点。 或者 DirectX 11 API 可能有一些专门的方法或途径。

手动额外阅读所有着色器以寻找语义和注释看起来有点过头了。

D3D11 的效果已从 DirectX SDK(现为 Windows SDK)移出并移至 GitHub、FX11.

上托管的开源项目中

要获得着色器的语义,您可以通过 D3D11Reflect 使用 D3D 着色器反射 API,它仍然是 SDK 的一部分。然而,这些 API 仅适用于 .hlsl 着色器,并不支持 FX 框架的所有附加功能。