我正在读一本书,作者是Frank Luna用DirectX 11进行3D游戏编程。
我用的是D3DX11CompileFromFileW()函数编译带有标志的着色器(D3D10_着色器_调试| D3D10_着色器_跳过_优化)
它在工作,但在新项目和一些更高级的程序中,尽管项目编译时没有错误,但它不显示对象。
在做了很多工作之后,我意识到如果我使用了flag
(D3D10_着色器_调试)或者只是
(D3D10_着色器_跳过_优化)
它可以正常工作,但当我或它们一起工作时,它就不能工作了
(即D3D10_着色器_调试| D3D10_着色器_跳过_优化)
我也尝试过fxc编译器,也遇到了同样的问题。有没有什么解决方案可以一起使用这两个标志,或者我可以只使用其中的一个(我在很多项目中都一起使用过,但最近没有。这本书也同时使用它们)。
发布于 2021-02-26 02:34:04
您应该尝试的第一件事是使用D3DCompiler API而不是使用过时的D3DX11“包装器”。目前您使用的是HLSL编译器2010年6月发布的"#43“版本,自那以来已经修复了许多错误。Windows10SDK提供了"#47“版本的HLSL编译器。
请注意,在VS2012或更高版本中,您需要使用一些特殊的设置来确保您的include/lib路径是正确的,以便将传统的Windows与具有许多更新的、重叠的头文件的现代Windows10SDK混合在一起。请参见
微软[Microsoft Docs](https://docs.microsoft.com/en-us/windows/win32/directx-sdk--august-2009-) ..。
请参见博客[此博客post](https://walbourn.github.io/hlsl-fxc-and-d3dcompile/) 有关D3DCompile应用编程接口的更多信息。
弗兰克的书很棒,但它已经出版了之前DirectX SDK已弃用。请参见
博客[此博客post](https://walbourn.github.io/book-recommendations/) 获取相关注释。
https://stackoverflow.com/questions/66304084
复制相似问题