DirectX HLSL包含指令不起作用

时间:2011-03-12 14:43:01

标签: c++ include directx hlsl directive

该文件: http://msdn.microsoft.com/en-us/library/dd607349(v=vs.85).aspx

声明#include“foobar.fx”会在与当前效果文件相同的目录中查找该文件。

它不起作用,但使用绝对路径确实无效。

谷歌没有拿出任何东西。我在这里缺少什么?

3 个答案:

答案 0 :(得分:6)

Direct3D 11 On-the-fly着色器编译器有一个默认的包含处理程序。

这是一个宏:(c ++) D3D_COMPILE_STANDARD_FILE_INCLUDE

这是D3DCompile函数的链接。

http://msdn.microsoft.com/en-us/library/windows/desktop/dd607324(v=vs.85).aspx

在include变量的解释中提到了宏。

我花了一段时间才找到奇怪的谷歌,但我顺便过去了。 我以为我会发布它以防万一其他人在这里结束。

答案 1 :(得分:5)

自动处理仅适用于离线着色器编译器工具,如您提供的链接中所述。如果您正在使用其中一个API进行编译,则需要为编译器指定一个包含处理程序,以便在遇到include指令时使用:ID3DInclude

答案 2 :(得分:0)

我明白了。

原来,我的着色器版本应与我的功能级别结合使用,如下所示。

  

顶点着色器:vs_4_0_level_9_1

     

像素着色器:ps_4_0_level_9_1