Funzione D3DX11CompileFromMemory
Nota
La libreria di utilità D3DX (D3DX 9, D3DX 10 e D3DX 11) è deprecata per Windows 8 e non è supportata per le app di Windows Store.
Nota
Invece di usare questa funzione, è consigliabile compilare offline usando il compilatore della riga di comando Fxc.exe o usare una delle API di compilazione HLSL, ad esempio l'API D3DCompile .
Compilare uno shader o un effetto caricato in memoria.
Sintassi
HRESULT D3DX11CompileFromMemory(
_In_ LPCSTR pSrcData,
_In_ SIZE_T SrcDataLen,
_In_ LPCSTR pFileName,
_In_ const D3D10_SHADER_MACRO *pDefines,
_In_ LPD3D10INCLUDE pInclude,
_In_ LPCSTR pFunctionName,
_In_ LPCSTR pProfile,
_In_ UINT Flags1,
_In_ UINT Flags2,
_In_ ID3DX11ThreadPump *pPump,
_Out_ ID3D10Blob **ppShader,
_Out_ ID3D10Blob **ppErrorMsgs,
_Out_ HRESULT *pHResult
);
Parametri
-
pSrcData [in]
-
Tipo: LPCSTR
Puntatore al shader in memoria.
-
SrcDataLen [in]
-
Tipo: SIZE_T
Dimensioni dello shader in memoria.
-
pFileName [in]
-
Tipo: LPCSTR
Nome del file contenente il codice shader.
-
pDefines [in]
-
Tipo: const D3D10_SHADER_MACRO*
Facoltativa. Puntatore a una matrice di definizioni di macro (vedere D3D10_SHADER_MACRO). L'ultima struttura della matrice funge da terminatore e deve avere tutti i membri impostati su 0. Se non usato, impostare pDefines su NULL.
-
pInclude [in]
-
Tipo: LPD3D10INCLUDE
Facoltativa. Puntatore a un'interfaccia per la gestione dei file includono. L'impostazione di questo valore su NULL causa un errore di compilazione se un shader contiene un #include.
-
pFunctionName [in]
-
Tipo: LPCSTR
Nome della funzione punto di ingresso shader in cui inizia l'esecuzione dello shader. Quando si compila un effetto, D3DX11CompileFromMemory ignora pFunctionName; è consigliabile impostare pFunctionName su NULL perché è consigliabile impostare un parametro puntatore su NULL se la funzione chiamata non la userà.
-
pProfile [in]
-
Tipo: LPCSTR
Stringa che specifica il modello shader; può essere qualsiasi profilo nel modello 2, modello shader 3, modello shader 4 o modello shader 5. Il profilo può essere anche per il tipo di effetto (ad esempio, fx_4_1).
-
Flags1 [in]
-
Tipo: UINT
Flag di compilazione shader.
-
Flags2 [in]
-
Tipo: UINT
Flag di compilazione degli effetti. Quando si compila un shader e non un file di effetto, D3DX11CompileFromMemory ignora Flags2; È consigliabile impostare Flags2 su zero perché è consigliabile impostare un parametro nonpointer su zero se la funzione chiamata non la userà.
-
pPump [in]
-
Tipo: ID3DX11ThreadPump*
Puntatore a un'interfaccia della pompa del thread (vedere ID3DX11ThreadPump Interface). Usare NULL per specificare che questa funzione non deve restituire finché non viene completata.
-
ppShader [out]
-
Tipo: ID3D10Blob**
Puntatore alla memoria contenente lo shader compilato, nonché tutte le informazioni di debug e tabella dei simboli incorporate.
-
ppErrorMsgs [out]
-
Tipo: ID3D10Blob**
Puntatore alla memoria contenente un elenco di errori e avvisi che si sono verificati durante la compilazione. Questi errori e avvisi sono identici all'output di debug da un debugger.
-
pHResult [out]
-
Tipo: HRESULT*
Puntatore al valore restituito. Può essere NULL. Se pPump non è NULL, pHResult deve essere un percorso di memoria valido fino al completamento dell'esecuzione asincrona.
Valore restituito
Tipo: HRESULT
Il valore restituito è uno dei valori elencati in Codici restituiti Direct3D 11.
D3DX11CompileFromMemory restituisce E_INVALIDARG se si specifica un parametro pHResult al parametro pHResult quando si specifica NULL al parametro pPump. Per altre informazioni su questa situazione, vedere Osservazioni.
Commenti
Per altre informazioni su D3DX11CompileFromMemory, vedere D3DCompile.
È necessario specificare NULL al parametro pHResult se si specifica anche NULL per il parametro pPump . In caso contrario, non è possibile creare successivamente uno shader usando il codice shader compilato a cui D3DX11CompileFromMemory restituisce nella memoria a cui punta il parametro ppShader . Per creare uno shader dal codice shader conforme, si chiama uno dei seguenti metodi di interfaccia ID3D11Device :
- CreateComputeShader
- CreateDomainShader
- CreateGeometryShader
- CreateGeometryShaderWithStreamOutput
- CreateHullShader
- CreatePixelShader
- CreateVertexShader
Inoltre, se si specifica un valore non NULL su pHResult quando si specifica NULL a pPump, D3DX11CompileFromMemory restituisce il codice di errore E_INVALIDARG.
Requisiti
Requisito | Valore |
---|---|
Intestazione |
|
Libreria |
|