D3DXCompileShaderFromFile-Funktion

Kompilieren Sie eine Shaderdatei.

Hinweis

Anstatt diese Legacyfunktion zu verwenden, wird empfohlen, offline zu kompilieren, indem Fxc.exe Befehlszeilencompiler oder die D3DCompile-API verwendet wird.

Syntax

HRESULT D3DXCompileShaderFromFile(
  _In_        LPCTSTR             pSrcFile,
  _In_  const D3DXMACRO           *pDefines,
  _In_        LPD3DXINCLUDE       pInclude,
  _In_        LPCSTR              pFunctionName,
  _In_        LPCSTR              pProfile,
  _In_        DWORD               Flags,
  _Out_       LPD3DXBUFFER        *ppShader,
  _Out_       LPD3DXBUFFER        *ppErrorMsgs,
  _Out_       LPD3DXCONSTANTTABLE *ppConstantTable
);

Parameter

pSrcFile [ In]

Typ: LPCTSTR

Zeiger auf eine Zeichenfolge, die den Dateinamen angibt.

pDefdefine [ In]

Typ: const D3DXMACRO *

Ein optionales null-terminiertes Array von D3DXMACRO-Strukturen. Dieser Wert kann NULL sein.

pInclude [ In]

Typ: LPD3DXINCLUDE

Optionaler Schnittstellenzeiger ID3DXInclude, der für die Behandlung von Include-Direktiven # verwendet werden soll. Wenn dieser Wert NULL ist, wird includes entweder beim Kompilieren aus einer Datei oder beim Kompilieren aus einer Ressource oder einem Arbeitsspeicher # zu einem Fehler führen.

pFunctionName [ In]

Typ: LPCSTR

Zeiger auf die Shader-Einstiegspunktfunktion, an der die Ausführung beginnt.

pProfile [ In]

Typ: LPCSTR

Zeiger auf ein Shaderprofil, das den Shaderanweisungssatz bestimmt. Eine Liste der verfügbaren Profile finden Sie unter D3DXGetVertexShaderProfile oder D3DXGetPixelShaderProfile.

Flags [ In]

Typ: DWORD

Kompilierungsoptionen, die durch verschiedene Flags identifiziert werden. Der Direct3D 10 HLSL-Compiler ist jetzt die Standardeinstellung. Weitere Informationen finden Sie unter D3DXSHADER-Flags.

ppShader [ out]

Typ: LPD3DXBUFFER*

Gibt einen Puffer zurück, der den erstellten Shader enthält. Dieser Puffer enthält den kompilierten Shadercode sowie alle eingebetteten Debug- und Symboltabelleninformationen.

ppErrorMsgs [ out]

Typ: LPD3DXBUFFER*

Gibt einen Puffer zurück, der eine Auflistung von Fehlern und Warnungen enthält, die während der Kompilierung aufgetreten sind. Dies sind die gleichen Meldungen, die der Debugger anzeigt, wenn er im Debugmodus ausgeführt wird. Dieser Wert kann NULL sein.

ppConstantTable [ out]

Typ: LPD3DXCONSTANTTABLE*

Gibt eine ID3DXConstantTable-Schnittstelle zurück, die für den Zugriff auf Shaderkonstanten verwendet werden kann. Dieser Wert kann NULL sein. Wenn Sie Ihre Anwendung als große Adressierung kompilieren (d. h., Sie verwenden die Linkeroption /LARGEADDRESSAWARE, um Adressen zu verarbeiten, die größer als 2 GB sind), können Sie diesen Parameter nicht verwenden und müssen ihn auf NULL festlegen. Stattdessen müssen Sie die D3DXGetShaderConstantTableEx-Funktion verwenden, um die shaderkonstante Tabelle abzurufen, die in den Shader eingebettet ist. In diesem D3DXGetShaderConstantTableEx-Aufruf müssen Sie das D3DXCONSTTABLE _ LARGEADDRESSAWARE-Flag an den Flags-Parameter übergeben, um den Zugriff auf bis zu 4 GB virtuellen Adressraum anzugeben.

Rückgabewert

Typ: HRESULT

Wenn die Funktion erfolgreich ist, ist der Rückgabewert D3D _ OK. Wenn die Funktion fehlschlägt, kann der Rückgabewert einer der folgenden sein: D3DERR _ INVALIDCALL, D3DXERR _ INVALIDDATA, E _ NOTIMPL, E _ OUTOFMEMORY.

E _ NOTIMPL wird zurückgegeben, wenn Sie 1.1-Shader verwenden (im Vergleich _ zu 1 _ 1 und Ps _ 1 _ 1).

Requirements (Anforderungen)

Anforderung Wert
Header
D3DX9Shader.h
Bibliothek
D3dx9.lib

Weitere Informationen

Shaderfunktionen

D3DXCompileShader

D3DXCompileShaderFromResource