在加载直接x 11 SDK项目示例时,在链接所有Libs./includes ETC后,我收到了错误;我在一个fx文件中遇到了以下内容。
VS版:VS终极2013 示例名称:'DepthOfFeild10.1' SDK:'Microsoft DirectX SDK(2010年2月)' fx文件名:'DepthOfField10.1.fx' 错误:错误1错误X3000:语法错误:意外标记'cb0'
也许我错过了一个lib /工具/设置程序? (运行Debug,X64)
建议表示赞赏。
答案 0 :(得分:2)
首先,如果您尝试同时使用VS 2013和旧版DirectX SDK,请务必阅读MSDN。
您需要在VS 2012中使用不同的include / lib /可执行路径顺序,而不是2010年2月和2010年6月版旧版DirectX SDK附带的默认VS 2010项目。
许多旧版DirectX SDK示例已经更新,因为VS 2013和Windows 8.1 SDK通常就足够了,因此无需使用旧版DirectX SDK。这些发布到GitHub。见DirectX SDK Samples Catalog。然而, DepthOfField10.1 不是其中之一,因为它是AMD的样本。您可以在archive中找到AMD的版本。
从DirectS SDK(2010年6月)版本的DepthOfField10.1开始(从示例浏览器安装)。
打开DepthOfField10.1_2010.sln
文件,然后将VC ++工具和库升级到v120
。
编辑项目属性 - > VC ++目录:
可执行目录:$(ExecutablePath);$(DXSDK_DIR)Utilities\bin\x86
包括目录:$(IncludePath);$(DXSDK_DIR)Include
图书馆目录:$(LibraryPath);$(DXSDK_DIR)Lib\x86
可执行目录:$(ExecutablePath);$(DXSDK_DIR)Utilities\bin\x64;$(DXSDK_DIR)Utilities\bin\x86;
包括目录:$(IncludePath);$(DXSDK_DIR)Include
图书馆目录:$(LibraryPath);$(DXSDK_DIR)Lib\x64
如果您使用的是VS 2015,则还需要添加DXERR的博客版本,并从项目中删除
dxerr.lib
的旧版DirectX SDK。需要快速破解DXUT来解决ASCII / UNICODE差异。这是必需的,因为VS 2015包含一些与C99相关的标准库更改,这些更改无法与用于构建旧版DirectX SDK的旧版strsafe.h
链接。
完成后,它会按原样构建和运行。
注意:旧版DirectX SDK中的大多数Direct3D 10样本都使用旧的效果(FX)系统。可以使用Direct3D 11版本的Effects,但HLSL编译器对Effects的支持已被正式弃用。请参阅Effects for Direct3D 11。
如果问题发生在我们自己的项目中,那么您可能错误地配置了FXC
命令行来构建该.fx文件。