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

标签 directx direct3d hlsl direct3d11

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

用例:我希望我的应用程序能够检测 float4 全局值是用作颜色还是用作简单的 4 浮点向量。如果是颜色,应用程序将使用 UI 中的颜色选择器显示变量。

最佳答案

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

Effects 11 is being provided as a porting aid for older code that makes use of the Effects 10 (FX10) API or Effects 9 (FX9) API in the deprecated D3DX9 library. See MSDN for a list of differences compared to the Effects 10 (FX10) library.

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

关于directx - 有没有办法将元数据附加到 HLSL 全局(统一/常量)变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42286451/

相关文章:

c++ - 无法从 Direct3D 获取抗锯齿图片

c# - HLSL 计算 - 按顺序处理像素?

graphics - 如何将此 HLSL 像素着色器校正为四边形的圆角?

opengl - AMD Mantle API 文档

opengl - 视频的GPU内存分配

c++ - 如何使用 D3DPT_TRIANGLESTRIP 基元类型在 DirectX 中绘制两个分离的矩形

c++ - hlsl 点光源问题

algorithm - 渲染不透明、启用 Alpha 和启用混合的对象

c++ - DirectX 10 资源泄漏

c++ - 我可以告诉 direct3d 使用 alpha channel 渲染吗?