cbuffer意外令牌DX11示例

时间:2015-10-14 01:21:36

标签: visual-studio directx buffer token

在加载直接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)

建议表示赞赏。

1 个答案:

答案 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 ++目录:

  • 对于所有配置和Win32平台,请将其设置为:

可执行目录:$(ExecutablePath);$(DXSDK_DIR)Utilities\bin\x86
包括目录:$(IncludePath);$(DXSDK_DIR)Include
图书馆目录:$(LibraryPath);$(DXSDK_DIR)Lib\x86

  • 对于所有配置和x64平台,请将其设置为:

可执行目录:$(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文件。