Freigeben über


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, wird empfohlen, offline zu kompilieren, indem Sie den Befehlszeilencompiler Fxc.exe verwenden oder eine der HLSL-Kompilierungs-APIs wie die D3DCompileFromFile-API 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 aufgelöst. Andernfalls wird der Datentyp in LPCSTR aufgelöst.

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 alle Member müssen auf 0 festgelegt sein. Wenn nicht verwendet, 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 verursacht, wenn ein Shader eine #include enthält.

pFunctionName [in]

Typ: LPCSTR

Name der Shader-Einstiegspunktfunktion, in der die Shaderausführung beginnt. Wenn Sie einen Effekt kompilieren, ignoriert D3DX11CompileFromFilepFunctionName; 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 (z. B. fx_4_1) sein.

Flags1 [in]

Typ: UINT

Shaderkompilierungsflags.

Flags2 [in]

Typ: UINT

Effektkompilierungsflags. Wenn Sie einen Shader und keine Effektdatei kompilieren, ignoriert D3DX11CompileFromFileFlags2; Es wird empfohlen, Flags2 auf 0 festzulegen, da es eine gute Programmierpraxis ist, einen Nichtpointerparameter 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 mit der Debugausgabe eines Debuggers identisch.

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.

D3DX11CompileFromFile gibt E_INVALIDARG zurück, wenn Sie einen Wert 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 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 verweist. Um einen Shader aus erfülltem Shadercode zu erstellen, rufen Sie eine der folgenden ID3D11Device-Schnittstellenmethoden auf:

Außerdem gibt D3DX11CompileFromFile den E_INVALIDARG Fehlercode zurück, wenn Sie pHResult einen Nicht-NULL-Wert angeben, wenn Sie NULL für pPump angeben.

Anforderungen

Anforderung Wert
Header
D3DX11async.h
Bibliothek
D3DX11.lib

Siehe auch

D3DX-Funktionen