Metodo ID3DXEffectCompiler::CompileShader
Compila uno shader da un effetto che contiene una o più funzioni.
Sintassi
HRESULT CompileShader(
[in] D3DXHANDLE hFunction,
[in] LPCSTR pTarget,
[in] DWORD Flags,
[out, retval] LPD3DXBUFFER *ppShader,
[out, retval] LPD3DXBUFFER *ppErrorMsgs,
[out] LPD3DXCONSTANTTABLE *ppConstantTable
);
Parametri
-
hFunction [in]
-
Tipo: D3DXHANDLE
Identificatore univoco della funzione da compilare. Questo valore non deve essere NULL. Vedere Handle (Direct3D 9).
-
pTarget [in]
-
Tipo: LPCSTR
Puntatore a un profilo shader che determina il set di istruzioni dello shader. Per un elenco dei profili disponibili, vedere D3DXGetVertexShaderProfile o D3DXGetPixelShaderProfile .
-
Flag [in]
-
Tipo: DWORD
Opzioni di compilazione identificate da vari flag. Il compilatore Direct3D 10 HLSL è ora l'impostazione predefinita. Per informazioni dettagliate, vedere Flag D3DXSHADER .
-
ppShader [out, retval]
-
Tipo: LPD3DXBUFFER*
Buffer contenente lo shader compilato. Lo shader del compilatore è una matrice di DWORD. Per altre informazioni sull'accesso al buffer, vedere ID3DXBuffer.
-
ppErrorMsgs [out, retval]
-
Tipo: LPD3DXBUFFER*
Buffer contenente almeno il primo messaggio di errore di compilazione che si è verificato. Sono inclusi gli errori del compilatore di effetti e gli errori di compilazione del linguaggio di alto livello. Per altre informazioni sull'accesso al buffer, vedere ID3DXBuffer.
-
ppConstantTable [out]
-
Tipo: LPD3DXCONSTANTTABLE*
Restituisce un'interfaccia ID3DXConstantTable , che può essere utilizzata per accedere alle costanti shader. Questo valore può essere NULL. Se si compila l'applicazione con riconoscimento degli indirizzi di grandi dimensioni, ovvero si usa l'opzione del linker /LARGEADDRESSAWARE per gestire indirizzi di dimensioni superiori a 2 GB, non è possibile usare questo parametro e impostarlo su NULL. È invece necessario usare la funzione D3DXGetShaderConstantTableEx per recuperare la tabella costante shader incorporata all'interno dello shader. In questa chiamata D3DXGetShaderConstantTableEx , è necessario passare il flag D3DXCONSTTABLE_LARGEADDRESSAWARE al parametro Flags per specificare di accedere a un massimo di 4 GB di spazio indirizzi virtuale.
Valore restituito
Tipo: HRESULT
Se il metodo ha esito positivo, il valore restituito viene S_OK.
Se gli argomenti non sono validi, il metodo restituirà D3DERR_INVALIDCALL.
Se il metodo ha esito negativo, il valore restituito verrà E_FAIL.
Commenti
È possibile specificare destinazioni per vertex shader, pixel shader e funzioni di riempimento delle trame.
Targets | Funzioni |
---|---|
Destinazioni vertex shader | vs_1_1, vs_2_0, vs_2_sw, vs_3_0 |
Destinazioni del pixel shader | ps_1_1, ps_1_2, ps_1_3, ps_1_4, ps_2_0, ps_2_sw, ps_3_0 |
Destinazioni di riempimento delle trame | tx_0, tx_1 |
Questo metodo compila uno shader da una funzione scritta in un linguaggio simile a C. Per altre informazioni, vedere HLSL.
Requisiti
Requisito | Valore |
---|---|
Intestazione |
|
Libreria |
|
Vedi anche