该文件: http://msdn.microsoft.com/en-us/library/dd607349(v=vs.85).aspx
声明#include“foobar.fx”会在与当前效果文件相同的目录中查找该文件。
它不起作用,但使用绝对路径确实无效。
谷歌没有拿出任何东西。我在这里缺少什么?答案 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