Condividi tramite


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
D3DX9Effect.h
Libreria
D3dx9.lib

Vedi anche

ID3DXEffectCompiler

D3DXGetShaderConstantTable