HLSL #pragma 一次等效?

War*_*rty 3 shader direct3d pragma hlsl include

#pragma onceHLSL 中与 C/C++-like 的等价物是什么?

我想要(作为一个人为的例子):

// ./dependency.hlsl
float x() { return 0; }

// ./shader.hlsl
#include "./dependency.hlsl" // (./ unnecessary; for question readability)
#include "./dependency.hlsl"
Run Code Online (Sandbox Code Playgroud)

不会失败error X3003: redefinition of 'x'#pragma once在我的文件顶部产生一个非错误warning X3568: 'once' : unknown pragma ignored并且什么都不做!

War*_*rty 6

使用类似 C/C++ 宏的包含守卫。人为的dependency.hlsl将如下所示:

#ifndef __DEPENDENCY_HLSL__
#define __DEPENDENCY_HLSL__

float x() { return 0; }

#endif // __DEPENDENCY_HLSL__
Run Code Online (Sandbox Code Playgroud)