D3DCOMPILE 常數

D3DCOMPILE 常數會指定編譯器如何編譯 HLSL 程式碼。

常數 描述 注意
D3DCOMPILE_DEBUG
/ZI
指示編譯器將偵錯檔案/行/類型/符號資訊插入輸出程式碼中。 請參閱D3DXSHADER_DEBUG
D3DCOMPILE_SKIP_VALIDATION
/Vd
指示編譯器不要根據已知功能和條件約束驗證產生的程式碼。 建議您只搭配過去成功編譯的著色器使用此常數。 DirectX 一律會先驗證著色器,再將其設定為裝置。 請參閱D3DXSHADER_SKIPVALIDATION
D3DCOMPILE_SKIP_OPTIMIZATION
/Od
指示編譯器在程式碼產生期間略過優化步驟。 建議您只針對偵錯目的設定這個常數。 請參閱D3DXSHADER_SKIPOPTIMIZATION
D3DCOMPILE_PACK_MATRIX_ROW_MAJOR
/Zpr
指示編譯器以資料列主要順序封裝著色器輸入和輸出的矩陣。 請參閱D3DXSHADER_PACKMATRIX_ROWMAJOR
D3DCOMPILE_PACK_MATRIX_COLUMN_MAJOR
/Zpc
指示編譯器在著色器的輸入和輸出上,以資料行主要順序封裝矩陣。 這種封裝通常更有效率,因為一系列的點產品接著可以執行向量矩陣乘法。 請參閱D3DXSHADER_PACKMATRIX_COLUMNMAJOR
D3DCOMPILE_PARTIAL_PRECISION
/Gpp
指示編譯器以部分精確度執行所有計算。 如果您設定這個常數,編譯的程式碼可能會在某些硬體上執行得更快。 請參閱D3DXSHADER_PARTIALPRECISION
D3DCOMPILE_FORCE_VS_SOFTWARE_NO_OPT
指示編譯器編譯下一個最高著色器設定檔的頂點著色器。 這個常數會開啟偵錯並關閉優化。 此旗標僅適用于 Direct3D 9。 請參閱D3DXSHADER_FORCE_VS_SOFTWARE_NOOPT
D3DCOMPILE_FORCE_PS_SOFTWARE_NO_OPT
指示編譯器編譯下一個最高著色器設定檔的圖元著色器。 這個常數也會開啟偵錯並關閉優化。 此旗標僅適用于 Direct3D 9。 請參閱D3DXSHADER_FORCE_PS_SOFTWARE_NOOPT
D3DCOMPILE_NO_PRESHADER
/Op
指示編譯器停用 Preshaders。 如果您設定這個常數,編譯器不會提取靜態運算式以供評估。 此旗標僅適用于舊版 Direct3D 9 和 Direct3D 10 效果 (FX) 。 請參閱D3DXSHADER_NO_PRESHADER
D3DCOMPILE_AVOID_FLOW_CONTROL
/Gfa
指示編譯器盡可能不使用流程式控制制建構。 請參閱D3DXSHADER_AVOID_FLOW_CONTROL
D3DCOMPILE_ENABLE_STRICTNESS
/Ges
強制嚴格編譯,這可能不允許舊版語法。 根據預設,編譯器會停用已淘汰語法的嚴格性。
D3DCOMPILE_IEEE_STRICTNESS
/Gis
強制 IEEE 嚴格編譯,以避免可能會中斷 IEEE 規則的優化。 請參閱D3DXSHADER_IEEE_STRICTNESS
D3DCOMPILE_ENABLE_BACKWARDS_COMPATIBILITY
/Gec
指示編譯器讓較舊的著色器編譯成 5_0 目標。 請參閱D3DXSHADER_ENABLE_BACKWARDS_COMPATIBILITY
D3DCOMPILE_OPTIMIZATION_LEVEL0
/O0
指示編譯器使用最低優化層級。 如果您設定這個常數,編譯器可能會產生較慢的程式碼,但更快速地產生程式碼。 當您反復開發著色器時,請設定這個常數。 請參閱D3DXSHADER_OPTIMIZATION_LEVEL0
D3DCOMPILE_OPTIMIZATION_LEVEL1
/O1
指示編譯器使用第二個最低優化層級。 請參閱D3DXSHADER_OPTIMIZATION_LEVEL1
D3DCOMPILE_OPTIMIZATION_LEVEL2
/O2
指示編譯器使用第二個最高優化層級。 請參閱D3DXSHADER_OPTIMIZATION_LEVEL2
D3DCOMPILE_OPTIMIZATION_LEVEL3
/O3
指示編譯器使用最高優化層級。 如果您設定這個常數,編譯器會產生最佳的可能程式碼,但可能需要很長的時間才能這麼做。 當效能是最重要的因素時,請為應用程式的最終組建設定這個常數。 請參閱D3DXSHADER_OPTIMIZATION_LEVEL3
D3DCOMPILE_WARNINGS_ARE_ERRORS
/WX
指示編譯器在編譯著色器程式碼時,將所有警告視為錯誤。 建議您針對新的著色器程式碼使用此常數,以便解決所有警告,並降低難以尋找的程式碼瑕疵數目。
D3DCOMPILE_RESOURCES_MAY_ALIAS
/res_may_alias
指示編譯器假設未排序的存取檢視 (UAV) 和著色器資源檢視 (SRV) 可能別名cs_5_0。 僅適用于 DirectX 12 / 著色器模型 5.1
D3DCOMPILE_ENABLE_UNBOUNDED_DESCRIPTOR_TABLES
/enable_unbounded_descriptor_tables
指示編譯器啟用未系結的描述中繼資料表。 僅適用于 DirectX 12 / 著色器模型 5.1
D3DCOMPILE_ALL_RESOURCES_BOUND
/all_resources_bound
指示編譯器以確保所有資源都已系結。 僅適用于 DirectX 12 / 著色器模型 5.1
D3DCOMPILE_DEBUG_NAME_FOR_SOURCE
/Zss
產生偵錯 PDB 時,這會針對雜湊使用來源檔案和二進位檔。
D3DCOMPILE_DEBUG_NAME_FOR_BINARY
/Zsb
產生偵錯 PDB 時,這只會針對雜湊使用二進位檔案名。

注意

D3DCOMPILE_RESOURCES_MAY_ALIASD3DCOMPILE_ENABLE_UNBOUNDED_DESCRIPTOR_TABLESD3DCOMPILE_ALL_RESOURCES_BOUND 編譯器常數是新的 ,從隨附于 Windows 8.1 SDK 或更新版本的D3dcompiler_47.dll開始。

注意

D3DCOMPILE_DEBUG_NAME_FOR_SOURCED3DCOMPILE_DEBUG_NAME_FOR_BINARY 編譯器常數是新的,從 Windows 10 Fall Creator 的 Update SDK (16299 版) 或更新版本隨附的D3dcompiler_47.dll開始。 請參閱此部落格文章

注意

針對 DirectX 12,著色器模型 5.1、D3DCompile API 和 FXC 全都已被取代。 請改為透過 DXIL 使用著色器模型 6。 請參閱 GitHub

規格需求

需求
標頭
D3DCompiler.h

另請參閱

D3DCompiler 常數