ID3DXEffectCompiler::CompileShader-Methode

Kompiliert einen Shader aus einem Effekt, der eine oder mehrere Funktionen 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 kompilierende Funktion. Dieser Wert darf nicht NULL sein. Siehe Handles (Direct3D 9).

pTarget [ In]

Typ: LPCSTR

Zeiger auf ein Shaderprofil, das den Shader-Anweisungssatz 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, 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 kompilierungsfehlermeldung enthält, die aufgetreten ist. Dies schließt Compilerfehler und Kompilierungsfehler auf hoher Ebene ein. 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 Adressverwaltung 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 Flag D3DXCONSTTABLE _ LARGEADDRESSAWARE an den Flags-Parameter übergeben, um anzugeben, dass auf bis zu 4 GB des virtuellen Adressraums zugegriffen werden soll.

Rückgabewert

Typ: HRESULT

Wenn die Methode erfolgreich ist, lautet der Rückgabewert S _ OK.

Wenn die Argumente ungültig sind, gibt die Methode D3DERR _ INVALIDCALL zurück.

Wenn die Methode fehlschlägt, ist der Rückgabewert E _ FAIL.

Hinweise

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