包含包含常量缓冲区的文件——寄存器呢?

Include file containing Constant Buffers - what about the registers?

在 hlsl 中,我们可以像在 C 中一样使用 #include "somefile"
我只想声明一次常量缓冲区并将它们包含在多个着色器中。但是寄存器呢?在某些文件中,常量缓冲区设置为 b0,而在其他文件中则设置为 b4。在此处包含文件的最佳做法是什么?

您可以在包含 header 之前 #define 寄存器名称,并且在 header 文件中您可以像使用常规预处理器标记一样使用它们 — 而不是在 register(b0) =19=],您可以在其中键入 register(B_CAMERA),然后在包含 #define B_CAMERA b0.

之前

但是,如果您只想传递寄存器编号(如 0)而不是整个寄存器名称(如 b0),请注意,因为 HLSL 预处理器处理 ## 连接 slightly differently than the C preprocessor, and there are also differences in how the shader model 5 and below and how the shader model 6 compilers 扩展它。