簡體   English   中英

Direct3D11 着色器編譯標志問題

[英]Direct3D11 shaders compile flags problems

我正在閱讀 Frank Luna 3D Game Programming with DirectX 11 的書。

我正在使用D3DX11CompileFromFileW() function 編譯帶有標志(D3D10_SHADER_DEBUG | D3D10_SHADER_SKIP_OPTIMIZATION)的着色器並且它正在工作,但是在新項目和一些更高級的程序中,盡管項目編譯沒有錯誤,但它不顯示對象。

經過大量工作后,我意識到如果我使用標志(D3D10_SHADER_DEBUG)或僅使用(D3D10_SHADER_SKIP_OPTIMIZATION)它可以正常工作,但是當我將它們組合在一起時不起作用(即 D3D10_SHADER_DEBUG | D3D10_SHADER_SKIP_OPTIMIZATION )

我也嘗試了 fxc 編譯器,但遇到了同樣的問題。 是否有任何解決方案可以一起使用這些標志,或者我只能使用其中一個(我在許多項目中一起使用它們,但最近沒有。這本書也一起使用它們)。

您應該嘗試的第一件事是直接使用D3DCompiler API ,而不是使用已棄用的 D3DX11“包裝器”。 目前,您正在使用 HLSL 編譯器的“#43”2010 年 6 月版本,並且從那以后有許多錯誤修復。 Windows 10 SDK 提供了“#47”版本的 HLSL 編譯器。

請注意,對於 VS 2012 或更高版本,您需要使用一些特殊設置來確保您的包含/lib 路徑正確,以便將舊版 DirectX SDK 與現代 Windows 10 ZF20E3C5E54C0AB3D375D660B 混合,后者具有許多新的重疊86 標頭F6AZ。 請參閱Microsoft 文檔

有關 D3DCompile API 的更多信息,請參閱此博客文章

Frank 的書非常好,但它是在 DirectX SDK 被棄用之前出版的。 有關相關說明,請參閱此博客文章

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM