D3DCompileFromFile 函式 (d3dcompiler.h)

注意 您可以使用此 API 來開發 Windows 市集應用程式,但無法在提交至 Windows 市集的應用程式中使用它。 Refer to the section, "Compiling shaders for UWP", in the remarks for D3DCompile2.
 
將 Microsoft 高階著色器語言 (HLSL) 程式代碼編譯為指定目標的位元組程序代碼。

語法

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 傳回碼

備註

注意 D3dcompiler_44.dll 或更新版本的檔案包含 D3DCompileFromFile 編譯程式函式。
 

規格需求

需求
目標平台 Windows
標頭 d3dcompiler.h
程式庫 D3DCompiler.lib
Dll D3DCompiler_47.dll

請參閱

函式