Freigeben über


ID3DXEffectCompiler::CompileShader-Methode

Kompiliert einen Shader aus einem Effekt, der mindestens eine Funktion enthält.

Syntax

HRESULT CompileShader(
  [in]          D3DXHANDLE          hFunction,
  [in]          LPCSTR              pTarget,
  [in]          DWORD               Flags,
  [out, retval] LPD3DXBUFFER        *ppShader,
  [out, retval] LPD3DXBUFFER        *ppErrorMsgs,
  [out]         LPD3DXCONSTANTTABLE *ppConstantTable
);

Parameter

hFunction [in]

Typ: D3DXHANDLE

Eindeutiger Bezeichner für die zu kompilierte Funktion. Dieser Wert darf nicht NULL sein. Siehe Handles (Direct3D 9).

pTarget [in]

Typ: LPCSTR

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

Flaggen [in]

Typ: DWORD

Kompilieren von Optionen, die durch verschiedene Flags identifiziert werden. Der Direct3D 10 HLSL-Compiler ist jetzt der Standard. Weitere Informationen finden Sie unter D3DXSHADER Flags .

ppShader [out, retval]

Typ: LPD3DXBUFFER*

Puffer, der den kompilierten Shader enthält. Der Compiler-Shader ist ein Array von DWORDs. Weitere Informationen zum Zugriff auf den Puffer finden Sie unter ID3DXBuffer.

ppErrorMsgs [out, retval]

Typ: LPD3DXBUFFER*

Puffer, der mindestens die erste kompilierte Fehlermeldung enthält, die aufgetreten ist. Dies umfasst Fehler beim Effektcompiler und allgemeine Sprachkompilierungsfehler. Weitere Informationen zum Zugriff auf den Puffer finden Sie unter ID3DXBuffer.

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 Adresse kompilieren (d. h., Sie verwenden die Linkeroption /LARGEADDRESSAWARE, um Adressen zu behandeln, 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 Funktion D3DXGetShaderConstantTableEx verwenden, um die Shaderkonstantentabelle abzurufen, die in den Shader eingebettet ist. In diesem D3DXGetShaderConstantTableEx-Aufruf müssen Sie das D3DXCONSTTABLE_LARGEADDRESSAWARE-Flag an den Flags-Parameter übergeben, um anzugeben, dass auf bis zu 4 GB virtueller Adressraum zugegriffen werden soll.

Rückgabewert

Typ: HRESULT

Wenn die Methode erfolgreich ist, wird der Rückgabewert S_OK.

Wenn die Argumente ungültig sind, gibt die Methode D3DERR_INVALIDCALL zurück.

Wenn die Methode fehlschlägt, wird der Rückgabewert E_FAIL.

Bemerkungen

Ziele können für Vertex-Shader, Pixel-Shader und Texturfüllfunktionen angegeben werden.

Ziele Functions
Vertex-Shaderziele vs_1_1, vs_2_0, vs_2_sw, vs_3_0
Pixel-Shaderziele ps_1_1, ps_1_2, ps_1_3, ps_1_4, ps_2_0, ps_2_sw, ps_3_0
Texturfüllziele tx_0, tx_1

 

Diese Methode kompiliert einen Shader aus einer Funktion, die in einer C-ähnlichen Sprache geschrieben ist. Weitere Informationen finden Sie unter HLSL.

Anforderungen

Anforderung Wert
Header
D3DX9Effect.h
Bibliothek
D3dx9.lib

Siehe auch

ID3DXEffectCompiler

D3DXGetShaderConstantTable