Вы можете # определить имена регистров перед включением вашего заголовка, и в файле заголовка вы можете использовать их как обычные токены препроцессора - вместо того, чтобы иметь register(b0)
в заголовке, вы можете напечатать, например, register(B_CAMERA)
в это, и прежде чем включать, #define B_CAMERA b0
.
Будьте осторожны, однако, если вы хотите просто передать номер регистра, например, 0, а не полное имя регистра, например, b0
, так как препроцессор HLSL обрабатывает ## конкатенацию немного отличается от препроцессора C , и есть также различия в том, как шейдерная модель 5 и ниже и как компиляторы шейдерной модели 6 расширяют ее.