D3DCompile 函式 (d3dcompiler.h)
將 HLSL 程式代碼或效果檔案編譯成指定目標的位元元組程式代碼。
語法
HRESULT D3DCompile(
[in] LPCVOID pSrcData,
[in] SIZE_T SrcDataSize,
[in, optional] LPCSTR pSourceName,
[in, optional] const D3D_SHADER_MACRO *pDefines,
[in, optional] ID3DInclude *pInclude,
[in, optional] LPCSTR pEntrypoint,
[in] LPCSTR pTarget,
[in] UINT Flags1,
[in] UINT Flags2,
[out] ID3DBlob **ppCode,
[out, optional] ID3DBlob **ppErrorMsgs
);
參數
[in] pSrcData
類型: LPCVOID
未編譯著色器數據的指標;ASCII HLSL 程式代碼或編譯的效果。
[in] SrcDataSize
類型: SIZE_T
pSrcData 的長度。
[in, optional] pSourceName
類型: LPCSTR
您可以將此參數用於指定錯誤訊息的字串。 如果未使用,請將 設定為 NULL。
[in, optional] pDefines
類型: const D3D_SHADER_MACRO*
定義著色器宏之 D3D_SHADER_MACRO 結構的選擇性陣列。 每個宏定義都包含名稱和以 Null 結尾的定義。 如果未使用,請將 設定為 NULL。 陣列中的最後一個結構做為終止符,而且必須將所有成員設定為 NULL。
[in, optional] pInclude
類型: ID3DInclude*
選擇性。 ID3DInclude 用於處理包含檔案的指標。 如果著色器包含 #include,將此設定為 NULL 會導致編譯錯誤。 您可以傳遞 D3D_COMPILE_STANDARD_FILE_INCLUDE 宏,這是預設 include 處理程式的指標。 此預設包含處理程式包含相對於目前目錄的檔案,以及相對於初始原始程式檔目錄的檔案。 當您使用 D3D_COMPILE_STANDARD_FILE_INCLUDE 時,必須在 pSourceName 參數中指定來源檔名;編譯程式會從 pSourceName 衍生初始相對目錄。
#define D3D_COMPILE_STANDARD_FILE_INCLUDE ((ID3DInclude*)(UINT_PTR)1)
[in, optional] pEntrypoint
類型: LPCSTR
著色器進入點函式的名稱,其中著色器執行開始。 當您使用 fx 設定文件編譯 (例如,fx_4_0、fx_5_0等等 ) ,D3DCompile 會忽略 pEntrypoint。 在此情況下,建議您將 pEntrypoint 設定為 NULL ,因為如果呼叫的函式不會使用它,最好是將指標參數設定為 NULL 。 針對所有其他著色器配置檔,需要有效的 pEntrypoint 。
[in] pTarget
類型: LPCSTR
字串,指定要編譯的著色器目標或著色器功能集。 著色器目標可以是著色器模型 2、著色器模型 3、著色器模型 4 或著色器模型 5。 例如,目標也可以是效果類型 (,例如fx_4_1) 。 如需各種配置檔支援的目標相關信息,請參閱 指定編譯程序目標。
[in] Flags1
類型: UINT
D3D 編譯常數所定義的旗標。
[in] Flags2
類型: UINT
D3D 編譯效果常數所定義的旗標。 當您編譯著色器而非效果檔案時, D3DCompile 會忽略 Flags2;我們建議您將 Flags2 設定為零,因為如果呼叫的函式不會使用它,則良好的程式設計做法是將非pointer 參數設定為零。
[out] ppCode
類型: ID3DBlob**
可接收 ID3DBlob 介面指標的變數指標,可用來存取編譯的程序代碼。
[out, optional] ppErrorMsgs
類型: ID3DBlob**
可接收 ID3DBlob 介面指標的變數指標,您可以用來存取編譯程式錯誤訊息,如果沒有錯誤,則為 NULL 。
傳回值
類型: HRESULT
傳回其中一個 Direct3D 11 傳回碼。
備註
D3DCompile 和 D3DCompile2 之間的差異在於,後者的方法採用一些選擇性參數,可用來控制位元組程式代碼產生方式的某些層面。 如果不需要這個額外的彈性,則使用 D3DCompile2 沒有效能提升。
規格需求
需求 | 值 |
---|---|
目標平台 | Windows |
標頭 | d3dcompiler.h |
程式庫 | d3dcompiler.lib |
Dll | d3dcompiler_47.dll |