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