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
-
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:
- CreateComputeShader
- CreateDomainShader
- CreateGeometryShader
- CreateGeometryShaderWithStreamOutput
- CreateHullShader
- CreatePixelShader
- CreateVertexShader
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 |
|
| Bibliothek |
|