D3DX11CompileFromFile-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 D3DCompileFromFile-API zu verwenden.

Kompilieren Sie einen Shader oder einen Effekt aus einer Datei.

Syntax

HRESULT D3DX11CompileFromFile(
  _In_        LPCTSTR            pSrcFile,
  _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

pSrcFile [ In]

Typ: LPCTSTR

Der Name der Datei, die den Shadercode enthält. Wenn die Compilereinstellungen Unicode erfordern, wird der Datentyp LPCTSTR in LPCWSTR auflösen. Andernfalls wird der Datentyp in LPCSTR auflösen.

pDefdefine [ 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 festlegen. Wenn sie nicht verwendet wird, legen Sie pDefdefdefinitionen auf NULL fest.

pInclude [ In]

Typ: LPD3D10INCLUDE

Optional. Zeiger auf eine Schnittstelle zum Behandeln von Includedateien. Das Festlegen auf NULL verursacht einen Kompilierungsfehler, wenn ein Shader ein Include # enthält.

pFunctionName [ In]

Typ: LPCSTR

Name der Shader-Einstiegspunktfunktion, an der die Shaderausführung beginnt. Wenn Sie einen Effekt kompilieren, ignoriert D3DX11CompileFromFile pFunctionName; Es wird empfohlen, pFunctionName auf NULL zu setzen, da es sich empfiehlt, einen Zeigerparameter auf NULL zu setzen, 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 (z. B. fx _ 4 _ 1) verwendet werden.

Flags1 [ In]

Typ: UINT

Shader-Kompilierungsflags.

Flags2 [ In]

Typ: UINT

Effect-Kompilierungsflags. Wenn Sie einen Shader und keine Effektdatei kompilieren, ignoriert D3DX11CompileFromFile Flags2; Es wird empfohlen, Flags2 auf 0 (null) zu setzen, da es sich empfiehlt, einen Nichtpointerparameter auf 0 (null) zu setzen, wenn die aufgerufene Funktion ihn nicht verwendet.

pPump [ In]

Typ: ID3DX11ThreadPump*

Ein Zeiger auf eine Threadpumpschnittstelle (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 Werte, die unter Direct3D 11-Rückgabecodes aufgeführt sind.

D3DX11CompileFromFile gibt E INVALIDARG zurück, wenn Sie für den _ pHResult-Parameter einen Nicht-NULL-Wert angeben, wenn Sie NULL für den pPump-Parameter angeben. Weitere Informationen zu dieser Situation finden Sie unter Hinweise.

Hinweise

Weitere Informationen zu D3DX11CompileFromFile 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 keinen Shader erstellen, indem Sie den kompilierten Shadercode verwenden, den D3DX11CompileFromFile im Arbeitsspeicher zurückgibt, auf den der ppShader-Parameter zeigt. Rufen Sie eine der folgenden ID3D11Device-Schnittstellenmethoden auf, um einen Shader aus einem shader-Code zu erstellen:

Wenn Sie für pHResult einen Wert angeben, der nicht NULL ist, wenn Sie "NULL" für pPump angeben, gibt D3DX11CompileFromFile den Fehlercode E _ INVALIDARG zurück.

Anforderungen

Anforderung Wert
Header
D3DX11async.h
Bibliothek
D3DX11.lib

Weitere Informationen

D3DX-Funktionen