D3DXCompileShader 函式
編譯著色器檔案。
注意
建議您使用 Fxc.exe 命令列編譯器或使用 D3DCompile API,而不是使用此舊版函式進行離線編譯。
語法
HRESULT D3DXCompileShader(
_In_ LPCSTR pSrcData,
_In_ UINT srcDataLen,
_In_ const D3DXMACRO *pDefines,
_In_ LPD3DXINCLUDE pInclude,
_In_ LPCSTR pFunctionName,
_In_ LPCSTR pProfile,
_In_ DWORD Flags,
_Out_ LPD3DXBUFFER *ppShader,
_Out_ LPD3DXBUFFER *ppErrorMsgs,
_Out_ LPD3DXCONSTANTTABLE *ppConstantTable
);
參數
-
pSrcData [in]
-
類型: LPCSTR
包含著色器的字串指標。
-
srcDataLen [in]
-
類型: UINT
以位元組為單位的資料長度。
-
pDefines [in]
-
類型:const D3DXMACRO*
選擇性 的 Null 終止陣列 D3DXMACRO 結構。 此值可能是 Null。
-
pInclude [in]
-
類型: LPD3DXINCLUDE
選擇性介面指標 ID3DXInclude,用於處理#include指示詞。 如果此值為 Null,則從檔案編譯時,#includes將會接受,或從資源或記憶體編譯時造成錯誤。
-
pFunctionName [in]
-
類型: LPCSTR
字串的指標,其中包含開始執行之著色器進入點函式的名稱。
-
pProfile [in]
-
類型: LPCSTR
著色器設定檔的指標,決定著色器指令集。 如需可用的配置檔案清單,請參閱 D3DXGetVertexShaderProfile 或 D3DXGetPixelShaderProfile 。
-
旗標 [in]
-
類型: DWORD
編譯各種旗標所識別的選項。 Direct3D 10 HLSL 編譯器現在是預設值。 如需詳細資訊,請參閱 D3DXSHADER 旗標 。
-
ppShader [out]
-
類型: LPD3DXBUFFER*
傳回包含所建立著色器的緩衝區。 此緩衝區包含編譯的著色器程式碼,以及任何內嵌的偵錯和符號資料表資訊。
-
ppErrorMsgs [out]
-
類型: LPD3DXBUFFER*
傳回緩衝區,其中包含編譯期間遇到的錯誤和警告清單。 這些是偵錯工具在偵錯模式中執行時所顯示的相同訊息。 此值可能是 Null。
-
ppConstantTable [out]
-
類型: LPD3DXCONSTANTTABLE*
傳回 ID3DXConstantTable 介面,可用來存取著色器常數。 此值可以是 Null。 如果您將應用程式編譯為大型位址感知 (,請使用 /LARGEADDRESSAWARE 連結器選項來處理大於 2 GB) 的位址,您無法使用此參數,而且必須將它設定為 Null。 相反地,您必須使用 D3DXGetShaderConstantTableEx 函式來擷取內嵌在著色器內的著色器常數資料表。 在此 D3DXGetShaderConstantTableEx 呼叫中,您必須將 D3DXCONSTTABLE_LARGEADDRESSAWARE 旗標傳遞至 Flags 參數,以指定存取最多 4 GB 的虛擬位址空間。
傳回值
類型: HRESULT
如果函式成功,傳回值會D3D_OK。 如果函式失敗,傳回值可以是下列其中一項:D3DERR_INVALIDCALL、D3DXERR_INVALIDDATA E_OUTOFMEMORY。
規格需求
需求 | 值 |
---|---|
標頭 |
|
程式庫 |
|
另請參閱