Freigeben über


D3DX11CompileFromMemory-Funktion

Hinweis

Die Hilfsprogrammbibliothek D3DX (D3DX 9, D3DX 10 und D3DX 11) ist für Windows 8 veraltet und wird für Windows Store-Apps nicht unterstützt.

Hinweis

Anstatt diese Funktion zu verwenden, empfiehlt es sich, offline mit dem Fxc.exe-Befehlszeilencompiler zu kompilieren oder eine der HLSL-Kompilierungs-APIs wie die D3DCompile-API zu verwenden.

Kompilieren Sie einen Shader oder einen Effekt, der in den Arbeitsspeicher geladen wird.

Syntax

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
);

Parameter

pSrcData [in]

Typ: LPCSTR

Zeiger auf den Shader im Arbeitsspeicher.

SrcDataLen [in]

Typ: SIZE_T

Größe des Shaders im Arbeitsspeicher.

pFileName [in]

Typ: LPCSTR

Der Name der Datei, die den Shadercode enthält.

pDefines [in]

Typ: const D3D10_SHADER_MACRO*

Optional. Zeiger auf ein Array von Makrodefinitionen (siehe D3D10_SHADER_MACRO). Die letzte Struktur im Array dient als Abschlusszeichen und muss alle Member auf 0 festgelegt haben. Wenn sie nicht verwendet wird, legen Sie pDefines auf NULL fest.

pInclude [in]

Typ: LPD3D10INCLUDE

Optional. Zeiger auf eine Schnittstelle für die Verarbeitung von Includedateien. Wenn Sie diesen Wert auf NULL festlegen, wird ein Kompilierfehler ausgelöst, wenn ein Shader einen #include enthält.

pFunctionName [in]

Typ: LPCSTR

Name der Shadereinstiegspunktfunktion, in der die Shaderausführung beginnt. Wenn Sie einen Effekt kompilieren, ignoriert D3DX11CompileFromMemorypFunctionName; Es wird empfohlen, pFunctionName auf NULL festzulegen, da es eine gute Programmierpraxis ist, einen Zeigerparameter auf NULL festzulegen, wenn die aufgerufene Funktion ihn nicht verwendet.

pProfile [in]

Typ: LPCSTR

Eine Zeichenfolge, die das Shadermodell angibt; kann ein beliebiges Profil in Shadermodell 2, Shadermodell 3, Shadermodell 4 oder Shadermodell 5 sein. Das Profil kann auch für den Effekttyp sein (z. B. fx_4_1).

Flags1 [in]

Typ: UINT

Shaderkompilierungsflags.

Flags2 [in]

Typ: UINT

Effektkompilierungsflags. Wenn Sie einen Shader und keine Effektdatei kompilieren, ignoriert D3DX11CompileFromMemoryFlags2; Es wird empfohlen, Flags2 auf 0 festzulegen, da es eine gute Programmierpraxis ist, einen Nicht-Zeigerparameter auf 0 festzulegen, wenn die aufgerufene Funktion ihn nicht verwendet.

pPump [in]

Typ: ID3DX11ThreadPump*

Ein Zeiger auf eine Threadpumpenschnittstelle (siehe ID3DX11ThreadPump-Schnittstelle). Verwenden Sie NULL , um anzugeben, dass diese Funktion erst zurückgegeben werden soll, wenn sie abgeschlossen ist.

ppShader [out]

Typ: ID3D10Blob**

Ein Zeiger auf den Arbeitsspeicher, der den kompilierten Shader sowie alle eingebetteten Debug- und Symboltabelleninformationen enthält.

ppErrorMsgs [out]

Typ: ID3D10Blob**

Ein Zeiger auf den Arbeitsspeicher, der eine Liste von Fehlern und Warnungen enthält, die während der Kompilierung aufgetreten sind. Diese Fehler und Warnungen sind identisch mit der Debugausgabe eines Debuggers.

pHResult [out]

Typ: HRESULT*

Ein Zeiger auf den Rückgabewert. Kann NULL sein. Wenn pPump nicht NULL ist, muss pHResult ein gültiger Speicherort sein, bis die asynchrone Ausführung abgeschlossen ist.

Rückgabewert

Typ: HRESULT

Der Rückgabewert ist einer der In Direct3D 11-Rückgabecodes aufgeführten Werte.

D3DX11CompileFromMemory gibt E_INVALIDARG zurück, wenn Sie nicht NULL für den pHResult-Parameter angeben, wenn Sie NULL für den pPump-Parameter angeben. Weitere Informationen zu dieser Situation finden Sie unter Hinweise.

Bemerkungen

Weitere Informationen zu D3DX11CompileFromMemory finden Sie unter D3DCompile.

Sie müssen NULL für den pHResult-Parameter angeben, wenn Sie auch NULL für den pPump-Parameter angeben. Andernfalls können Sie anschließend keinen Shader mit dem kompilierten Shadercode erstellen, den D3DX11CompileFromMemory im Arbeitsspeicher zurückgibt, auf den der ppShader-Parameter verweist. Um einen Shader aus dem erfüllten Shadercode zu erstellen, rufen Sie eine der folgenden ID3D11Device-Schnittstellenmethoden auf:

Wenn Sie außerdem einen Wert ungleich NULL für pHResult angeben, wenn Sie NULL für pPump angeben, gibt D3DX11CompileFromMemory den E_INVALIDARG Fehlercode zurück.

Anforderungen

Anforderung Wert
Header
D3DX11async.h
Bibliothek
D3DX11.lib

Siehe auch

D3DX-Funktionen