D3DCompile-Funktion (d3dcompiler.h)
Kompilieren Sie HLSL-Code oder eine Effektdatei in Bytecode für ein bestimmtes Ziel.
Syntax
HRESULT D3DCompile(
[in] LPCVOID pSrcData,
[in] SIZE_T SrcDataSize,
[in, optional] LPCSTR pSourceName,
[in, optional] const D3D_SHADER_MACRO *pDefines,
[in, optional] ID3DInclude *pInclude,
[in, optional] LPCSTR pEntrypoint,
[in] LPCSTR pTarget,
[in] UINT Flags1,
[in] UINT Flags2,
[out] ID3DBlob **ppCode,
[out, optional] ID3DBlob **ppErrorMsgs
);
Parameter
[in] pSrcData
Typ: LPCVOID
Ein Zeiger auf nicht kompilierte Shaderdaten; entweder ASCII-HLSL-Code oder ein kompilierter Effekt.
[in] SrcDataSize
Typ: SIZE_T
Länge von pSrcData.
[in, optional] pSourceName
Typ: LPCSTR
Sie können diesen Parameter für Zeichenfolgen verwenden, die Fehlermeldungen angeben. Wenn sie nicht verwendet wird, legen Sie auf NULL fest.
[in, optional] pDefines
Typ: const D3D_SHADER_MACRO*
Ein optionales Array von D3D_SHADER_MACRO Strukturen, die Shadermakros definieren. Jede Makrodefinition enthält einen Namen und eine Definition mit NULL-Beendigung. Wenn sie nicht verwendet wird, legen Sie auf NULL fest. Die letzte Struktur im Array dient als Abschlusszeichen, und alle Member müssen auf NULL festgelegt sein.
[in, optional] pInclude
Typ: ID3DInclude*
Optional. Ein Zeiger auf eine ID3DInclude für die Verarbeitung von Includedateien. Wenn Sie diesen Wert auf NULL festlegen, wird ein Kompilierfehler ausgelöst, wenn ein Shader einen #include enthält. Sie können das D3D_COMPILE_STANDARD_FILE_INCLUDE Makro übergeben, bei dem es sich um einen Zeiger auf einen standardmäßigen Includehandler handelt. Dieser standardmäßige Includehandler umfasst Dateien, die relativ zum aktuellen Verzeichnis sind, und Dateien, die relativ zum Verzeichnis der ursprünglichen Quelldatei sind. Wenn Sie D3D_COMPILE_STANDARD_FILE_INCLUDE verwenden, müssen Sie den Namen der Quelldatei im pSourceName-Parameter angeben. Der Compiler leitet das anfängliche relative Verzeichnis von pSourceName ab.
#define D3D_COMPILE_STANDARD_FILE_INCLUDE ((ID3DInclude*)(UINT_PTR)1)
[in, optional] pEntrypoint
Typ: LPCSTR
Der Name der Shadereinstiegspunktfunktion, in der die Shaderausführung beginnt. Wenn Sie mit einem fx-Profil kompilieren (z. B. fx_4_0, fx_5_0 usw.), ignoriert D3DCompilepEntrypoint. In diesem Fall wird empfohlen, pEntrypoint auf NULL festzulegen, da es eine gute Programmierpraxis ist, einen Zeigerparameter auf NULL festzulegen, wenn die aufgerufene Funktion ihn nicht verwendet. Für alle anderen Shaderprofile ist ein gültiger pEntrypoint erforderlich.
[in] pTarget
Typ: LPCSTR
Eine Zeichenfolge, die das Shaderziel oder die Gruppe der Shaderfeatures angibt, für die kompiliert werden soll. Das Shaderziel kann Shadermodell 2, Shadermodell 3, Shadermodell 4 oder Shadermodell 5 sein. Das Ziel kann auch ein Effekttyp sein (z. B. fx_4_1). Informationen zu den Zielen, die von verschiedenen Profilen unterstützt werden, finden Sie unter Angeben von Compilerzielen.
[in] Flags1
Typ: UINT
Durch D3D-Kompilierungskonstanten definierte Flags.
[in] Flags2
Typ: UINT
Durch D3D-Kompilierungseffektkonstanten definierte Flags. Wenn Sie einen Shader und keine Effektdatei kompilieren, ignoriert D3DCompileFlags2; Es wird empfohlen, Flags2 auf 0 festzulegen, da es eine gute Programmierpraxis ist, einen Nicht-Zeigerparameter auf 0 festzulegen, wenn die aufgerufene Funktion ihn nicht verwendet.
[out] ppCode
Typ: ID3DBlob**
Ein Zeiger auf eine Variable, die einen Zeiger auf die ID3DBlob-Schnittstelle empfängt, mit der Sie auf den kompilierten Code zugreifen können.
[out, optional] ppErrorMsgs
Typ: ID3DBlob**
Ein Zeiger auf eine Variable, die einen Zeiger auf die ID3DBlob-Schnittstelle empfängt, mit der Sie auf Compilerfehlermeldungen zugreifen können, oder NULL , wenn keine Fehler vorliegen.
Rückgabewert
Typ: HRESULT
Gibt einen der Direct3D 11-Rückgabecodes zurück.
Hinweise
Der Unterschied zwischen D3DCompile und D3DCompile2 besteht darin, dass die letztere Methode einige optionale Parameter verwendet, die verwendet werden können, um einige Aspekte der Bytecodegenerierung zu steuern. Wenn diese zusätzliche Flexibilität nicht erforderlich ist, gibt es keinen Leistungsgewinn durch die Verwendung von D3DCompile2.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Windows |
Kopfzeile | d3dcompiler.h |
Bibliothek | d3dcompiler.lib |
DLL | d3dcompiler_47.dll |