Share via


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 :

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
D3DX11async.h
Libreria
D3DX11.lib

Vedi anche

Funzioni D3DX