共用方式為


D3DX11CompileFromMemory 函式

注意

D3DX (D3DX 9、D3DX 10 和 D3DX 11) 公用程式程式庫已被取代為 Windows 8,且不支援 Windows 市集應用程式。

注意

建議您不要使用此函式,而是建議使用 Fxc.exe 命令列編譯器,或使用其中一個 HLSL 編譯 API,例如 D3DCompile API 來離線編譯。

編譯在記憶體中載入的著色器或效果。

語法

HRESULT D3DX11CompileFromMemory(
  _In_        LPCSTR             pSrcData,
  _In_        SIZE_T             SrcDataLen,
  _In_        LPCSTR             pFileName,
  _In_  const D3D10_SHADER_MACRO *pDefines,
  _In_        LPD3D10INCLUDE     pInclude,
  _In_        LPCSTR             pFunctionName,
  _In_        LPCSTR             pProfile,
  _In_        UINT               Flags1,
  _In_        UINT               Flags2,
  _In_        ID3DX11ThreadPump  *pPump,
  _Out_       ID3D10Blob         **ppShader,
  _Out_       ID3D10Blob         **ppErrorMsgs,
  _Out_       HRESULT            *pHResult
);

參數

pSrcData [in]

類型: LPCSTR

記憶體中著色器的指標。

SrcDataLen [in]

類型: SIZE_T

記憶體中的著色器大小。

pFileName [in]

類型: LPCSTR

包含著色器程式碼的檔案名。

pDefines [in]

類型:const D3D10_SHADER_MACRO*

選擇性。 巨集定義的陣列指標 (請參閱 D3D10_SHADER_MACRO) 。 陣列中的最後一個結構會做為結束字元,而且所有成員都必須設定為 0。 如果未使用,請將 pDefines 設定為 Null

pInclude [in]

類型: LPD3D10INCLUDE

選擇性。 介面的指標,用於處理 Include 檔案。 如果著色器包含#include,將此設定為 Null 會導致編譯錯誤。

pFunctionName [in]

類型: LPCSTR

著色器執行開始處的著色器進入點函式名稱。 當您編譯效果時, D3DX11CompileFromMemory 會忽略 pFunctionName;我們建議您將 pFunctionName 設定為 Null ,因為如果呼叫的函式不會使用它,最好是將指標參數設定為 Null

pProfile [in]

類型: LPCSTR

指定著色器模型的字串;可以是著色器模型 2、著色器模型 3、著色器模型 4 或著色器模型 5 中的任何設定檔。 設定檔也可以用於效果類型 (例如,fx_4_1) 。

Flags1 [in]

類型: UINT

著色器 編譯旗標

Flags2 [in]

類型: UINT

效果 編譯旗標。 當您編譯著色器而非效果檔案時, D3DX11CompileFromMemory 會忽略 Flags2;我們建議您將 Flags2 設定為零,因為如果呼叫的函式不會使用它,最好是將非pointer 參數設定為零。

pPump [in]

類型: ID3DX11ThreadPump*

執行緒幫浦介面的指標 (請參閱 ID3DX11ThreadPump 介面) 。 使用 Null 指定此函式在完成之前不應傳回。

ppShader [out]

類型: ID3D10Blob**

記憶體的指標,其中包含已編譯的著色器,以及任何內嵌的偵錯和符號資料表資訊。

ppErrorMsgs [out]

類型: ID3D10Blob**

記憶體的指標,其中包含編譯期間發生的錯誤和警告清單。 這些錯誤和警告與偵錯工具的偵錯輸出相同。

pHResult [out]

類型: HRESULT*

傳回值的指標。 可為 Null。 如果 pPump 不是 Null則 pHResult 必須是有效的記憶體位置,直到非同步執行完成為止。

傳回值

類型: HRESULT

傳回值是 Direct3D 11 傳回碼中列出的其中一個值。

D3DX11CompileFromMemory如果您在提供NullpPump參數時,將非Null提供給pHResult參數,則會傳回E_INVALIDARG。 如需這種情況的詳細資訊,請參閱。

備註

如需 D3DX11CompileFromMemory的詳細資訊,請參閱 D3DCompile

如果您也提供NullpPump參數,則必須將Null提供給pHResult參數。 否則,您無法使用 D3DX11CompileFromMemory 傳回的已編譯著色器程式碼,在 ppShader 參數指向的記憶體中傳回著色器。 若要從符合的著色器程式碼建立著色器,您可以呼叫下列其中一個 ID3D11Device 介面方法:

此外,如果您在提供NullpPump時,將非Null值提供給pHResultD3DX11CompileFromMemory會傳回E_INVALIDARG錯誤碼。

規格需求

需求
標頭
D3DX11async.h
程式庫
D3DX11.lib

另請參閱

D3DX 函式