D3DCompileFromFile 函式 (d3dcompiler.h)
語法
HRESULT D3DCompileFromFile(
[in] LPCWSTR pFileName,
[in, optional] const D3D_SHADER_MACRO *pDefines,
[in, optional] ID3DInclude *pInclude,
[in] LPCSTR pEntrypoint,
[in] LPCSTR pTarget,
[in] UINT Flags1,
[in] UINT Flags2,
[out] ID3DBlob **ppCode,
[out, optional] ID3DBlob **ppErrorMsgs
);
參數
[in] pFileName
常數 Null 終止字串的指標,其中包含包含著色器程式代碼的檔名。
[in, optional] pDefines
定義著色器宏之 D3D_SHADER_MACRO 結構的選擇性陣列。 每個宏定義都包含名稱和以 Null 結尾的定義。 如果未使用,請將 設定為 NULL。 陣列中的最後一個結構做為終止符,而且必須將所有成員設定為 NULL。
[in, optional] pInclude
編譯程式用來處理包含檔案之 ID3DInclude 介面的選擇性指標。 如果您將此參數設定為 NULL ,且著色器包含 #include,就會發生編譯錯誤。 您可以傳遞 D3D_COMPILE_STANDARD_FILE_INCLUDE 宏,這是預設 include 處理程式的指標。 此預設 Include 處理程式包含相對於目前目錄的檔案。
#define D3D_COMPILE_STANDARD_FILE_INCLUDE ((ID3DInclude*)(UINT_PTR)1)
[in] pEntrypoint
常數 Null 終止字串的指標,其中包含著色器執行開始之著色器進入點函式的名稱。 當您編譯效果時, D3DCompileFromFile 會忽略 pEntrypoint;我們建議您將 pEntrypoint 設定為 NULL ,因為如果呼叫的函式不會使用它,最好是將指標參數設定為 NULL 。
[in] pTarget
常數 Null 終止字串的指標,指定要編譯的著色器目標或著色器功能集。 著色器目標可以是著色器模型 (例如著色器模型 2、著色器模型 3、著色器模型 4 或著色器模型 5 和更新版本) 。 例如,目標也可以是效果類型 (,例如fx_4_1) 。 如需各種配置檔支援的目標相關信息,請參閱 指定編譯程序目標。
[in] Flags1
著色器 編譯選項 的組合,使用位 OR 運算結合。 產生的值會指定編譯程式如何編譯 HLSL 程式代碼。
[in] Flags2
效果 編譯選項 的組合,使用位 OR 運算結合。 產生的值會指定編譯程式如何編譯效果。 當您編譯著色器而非效果檔案時, D3DCompileFromFile 會忽略 Flags2;我們建議您將 Flags2 設定為零,因為如果呼叫的函式不會使用它,則良好的程式設計做法是將非pointer 參數設定為零。
[out] ppCode
可接收 ID3DBlob 介面指標的變數指標,可用來存取編譯的程序代碼。
[out, optional] ppErrorMsgs
變數的選擇性指標,可接收 ID3DBlob 介面的指標,您可以在沒有任何錯誤時用來存取編譯程式錯誤訊息,或 NULL 。
傳回值
傳回其中一個 Direct3D 11 傳回碼。
備註
規格需求
需求 | 值 |
---|---|
目標平台 | Windows |
標頭 | d3dcompiler.h |
程式庫 | D3DCompiler.lib |
Dll | D3DCompiler_47.dll |