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 |
|
Bibliothek |
|
Siehe auch