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

问题描述 投票:0回答:1

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

include hlsl
1个回答
0
投票

您可以在包含标头之前#define寄存器名称,并且可以在标头文件中像常规预处理器令牌一样使用它们-代替在标头中包含register(b0),您可以在其中键入register(B_CAMERA) ,并且在包含#define B_CAMERA b0之前。

但是要小心,如果您只想传递像0这样的寄存器号而不是像b0这样的整个寄存器名,因为HLSL预处理器处理##级联slightly differently than the C preprocessor,并且还有differences in how the shader model 5 and below and how the shader model 6 compilers进行扩展。

© www.soinside.com 2019 - 2024. All rights reserved.