有没有办法将元数据附加到HLSL全局(统一/常量)变量?

时间:2017-02-16 23:08:53

标签: directx direct3d hlsl direct3d11

我想知道是否有任何方法可以将特定于应用程序的元数据附加到HLSL着色器中的全局变量中。我知道HLSL在全局变量上支持annotations,但我找不到任何方法来读取这些注释(可能是通过反射API)而不使用我的应用程序不使用的Effects Framework。有没有办法将特定于应用程序的元数据附加到HLSL中的全局变量? (最好没有从变量名中推断出特殊含义。)

用例:我希望我的应用程序能够检测float4全局是用作颜色还是用作简单的4-float向量。在它是一种颜色的情况下,应用程序将使用UI中的颜色选择器显示变量。

1 个答案:

答案 0 :(得分:0)

如果您未使用效果框架(在D3DX中),则可以使用Effects for DX11库来读取这些注释的值。这是库不是DirectX SDK本身的一部分,因此,它没有像D3DX那样特别弃用。事实上,它所说的预期目的是:

  

效果11作为旧代码的移植辅助提供   使用效果10(FX10)API或效果9(FX9)API   不推荐使用D3DX9库。有关差异列表,请参阅MSDN   到Effects 10(FX10)库。

除了注释之外,没有内置的方法将元数据附加到变量,除了命名方案(或其他此类隐式提示)。