Funzione D3DCompile (d3dcompiler.h)
Compilare il codice HLSL o un file di effetto in bytecode per una determinata destinazione.
Sintassi
HRESULT D3DCompile(
[in] LPCVOID pSrcData,
[in] SIZE_T SrcDataSize,
[in, optional] LPCSTR pSourceName,
[in, optional] const D3D_SHADER_MACRO *pDefines,
[in, optional] ID3DInclude *pInclude,
[in, optional] LPCSTR pEntrypoint,
[in] LPCSTR pTarget,
[in] UINT Flags1,
[in] UINT Flags2,
[out] ID3DBlob **ppCode,
[out, optional] ID3DBlob **ppErrorMsgs
);
Parametri
[in] pSrcData
Tipo: LPCVOID
Puntatore ai dati dello shader non compilati; Codice ASCII HLSL o effetto compilato.
[in] SrcDataSize
Tipo: SIZE_T
Lunghezza di pSrcData.
[in, optional] pSourceName
Tipo: LPCSTR
È possibile usare questo parametro per le stringhe che specificano i messaggi di errore. Se non usato, impostare su NULL.
[in, optional] pDefines
Tipo: const D3D_SHADER_MACRO*
Matrice facoltativa di strutture D3D_SHADER_MACRO che definiscono le macro shader. Ogni definizione di macro contiene un nome e una definizione con terminazione null. Se non usato, impostare su NULL. L'ultima struttura della matrice funge da terminatore e deve avere tutti i membri impostati su NULL.
[in, optional] pInclude
Tipo: ID3DInclude*
facoltativo. Puntatore a un ID3DInclude per la gestione di file di inclusione. L'impostazione di questo valore su NULL causa un errore di compilazione se un shader contiene un #include. È possibile passare la macro D3D_COMPILE_STANDARD_FILE_INCLUDE , ovvero un puntatore a un gestore di inclusione predefinito. Questo gestore di inclusione predefinito include file relativi alla directory corrente e ai file relativi alla directory del file di origine iniziale. Quando si usa D3D_COMPILE_STANDARD_FILE_INCLUDE, è necessario specificare il nome del file di origine nel parametro pSourceName ; il compilatore deriva la directory relativa iniziale da pSourceName.
#define D3D_COMPILE_STANDARD_FILE_INCLUDE ((ID3DInclude*)(UINT_PTR)1)
[in, optional] pEntrypoint
Tipo: LPCSTR
Nome della funzione di ingresso del punto di ingresso shader in cui inizia l'esecuzione dello shader. Quando si compila usando un profilo fx(ad esempio, fx_4_0, fx_5_0 e così via), D3DCompile ignora pEntrypoint. In questo caso, è consigliabile impostare pEntrypoint su NULL perché è consigliabile impostare un parametro puntatore su NULL se la funzione chiamata non lo userà. Per tutti gli altri profili shader, è necessario un pEntrypoint valido.
[in] pTarget
Tipo: LPCSTR
Stringa che specifica la destinazione dello shader o il set di funzionalità shader da compilare. La destinazione shader può essere modello 2, modello shader 3, modello shader 4 o modello shader 5. La destinazione può anche essere un tipo di effetto , ad esempio fx_4_1. Per informazioni sulle destinazioni supportate da vari profili, vedere Specificare le destinazioni del compilatore.
[in] Flags1
Tipo: UINT
Flag definiti dalle costanti di compilazione D3D.
[in] Flags2
Tipo: UINT
Flag definiti dalle costanti dell'effetto di compilazione D3D. Quando si compila un shader e non un file di effetto, D3DCompile ignora Flags2; È consigliabile impostare Flags2 su zero perché è consigliabile impostare un parametro nonpointer su zero se la funzione chiamata non la userà.
[out] ppCode
Tipo: ID3DBlob**
Puntatore a una variabile che riceve un puntatore all'interfaccia ID3DBlob che è possibile usare per accedere al codice compilato.
[out, optional] ppErrorMsgs
Tipo: ID3DBlob**
Puntatore a una variabile che riceve un puntatore all'interfaccia ID3DBlob che è possibile usare per accedere ai messaggi di errore del compilatore o NULL se non sono presenti errori.
Valore restituito
Tipo: HRESULT
Restituisce uno dei codici restituiti Direct3D 11.
Commenti
La differenza tra D3DCompile e D3DCompile2 è che quest'ultimo metodo accetta alcuni parametri facoltativi che possono essere usati per controllare alcuni aspetti della modalità di generazione di bytecode. Se questa flessibilità aggiuntiva non è necessaria, non è possibile ottenere prestazioni dall'uso di D3DCompile2.
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Windows |
Intestazione | d3dcompiler.h |
Libreria | d3dcompiler.lib |
DLL | d3dcompiler_47.dll |