ID3DXEffectCompiler::CompileShader 方法
從包含一或多個函式的效果編譯著色器。
語法
HRESULT CompileShader(
[in] D3DXHANDLE hFunction,
[in] LPCSTR pTarget,
[in] DWORD Flags,
[out, retval] LPD3DXBUFFER *ppShader,
[out, retval] LPD3DXBUFFER *ppErrorMsgs,
[out] LPD3DXCONSTANTTABLE *ppConstantTable
);
參數
-
hFunction [in]
-
類型: D3DXHANDLE
要編譯之函式的唯一識別碼。 此值不得為 Null。 請參閱 處理 Direct3D 9 () 。
-
pTarget [in]
-
類型: LPCSTR
著色器設定檔的指標,決定著色器指令集。 如需可用的配置檔案清單,請參閱 D3DXGetVertexShaderProfile 或 D3DXGetPixelShaderProfile 。
-
旗標 [in]
-
類型: DWORD
編譯各種旗標所識別的選項。 Direct3D 10 HLSL 編譯器現在是預設值。 如需詳細資訊,請參閱 D3DXSHADER 旗標 。
-
ppShader [out, retval]
-
類型: LPD3DXBUFFER*
包含已編譯著色器的緩衝區。 編譯器著色器是 DWORD 的陣列。 如需存取緩衝區的詳細資訊,請參閱 ID3DXBuffer。
-
ppErrorMsgs [out, retval]
-
類型: LPD3DXBUFFER*
包含至少發生第一個編譯錯誤訊息的緩衝區。 這包括效果編譯器錯誤和高階語言編譯錯誤。 如需存取緩衝區的詳細資訊,請參閱 ID3DXBuffer。
-
ppConstantTable [out]
-
類型: LPD3DXCONSTANTTABLE*
傳回 ID3DXConstantTable 介面,可用來存取著色器常數。 此值可以是 Null。 如果您將應用程式編譯為大型位址感知 (,請使用 /LARGEADDRESSAWARE 連結器選項來處理大於 2 GB) 的位址,您無法使用此參數,而且必須將它設定為 Null。 相反地,您必須使用 D3DXGetShaderConstantTableEx 函式來擷取內嵌在著色器內的著色器常數資料表。 在此 D3DXGetShaderConstantTableEx 呼叫中,您必須將 D3DXCONSTTABLE_LARGEADDRESSAWARE 旗標傳遞至 Flags 參數,以指定存取最多 4 GB 的虛擬位址空間。
傳回值
類型: HRESULT
如果方法成功,傳回值會S_OK。
如果引數無效,方法會傳回D3DERR_INVALIDCALL。
如果方法失敗,傳回值將會E_FAIL。
備註
您可以針對頂點著色器、圖元著色器和紋理填滿函式指定目標。
目標 | 函式 |
---|---|
頂點著色器目標 | vs_1_1、vs_2_0、vs_2_sw、vs_3_0 |
圖元著色器目標 | ps_1_1、ps_1_2、ps_1_3、ps_1_4、ps_2_0、ps_2_sw ps_3_0 |
紋理填滿目標 | tx_0、tx_1 |
這個方法會從以類似 C 語言撰寫的函式編譯著色器。 如需詳細資訊,請參閱 HLSL。
規格需求
需求 | 值 |
---|---|
標頭 |
|
程式庫 |
|
另請參閱