D3DCompile, fonction (d3dcompiler.h)
Compilez du code HLSL ou un fichier d’effet dans un bytecode pour une cible donnée.
Syntaxe
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
);
Paramètres
[in] pSrcData
Type : LPCVOID
Pointeur vers des données de nuanceur non compilées ; code HLSL ASCII ou effet compilé.
[in] SrcDataSize
Type : SIZE_T
Longueur de pSrcData.
[in, optional] pSourceName
Type : LPCSTR
Vous pouvez utiliser ce paramètre pour les chaînes qui spécifient des messages d’erreur. S’il n’est pas utilisé, définissez sur NULL.
[in, optional] pDefines
Type : const D3D_SHADER_MACRO*
Tableau facultatif de structures D3D_SHADER_MACRO qui définissent des macros de nuanceur. Chaque définition de macro contient un nom et une définition terminée par null. S’il n’est pas utilisé, définissez sur NULL. La dernière structure du tableau sert de terminateur et doit avoir tous les membres définis sur NULL.
[in, optional] pInclude
Type : ID3DInclude*
facultatif. Pointeur vers un id3DInclude pour la gestion des fichiers include. L’attribution de la valeur NULL entraîne une erreur de compilation si un nuanceur contient un #include. Vous pouvez passer la macro D3D_COMPILE_STANDARD_FILE_INCLUDE , qui est un pointeur vers un gestionnaire include par défaut. Ce gestionnaire include par défaut inclut les fichiers relatifs au répertoire actif et les fichiers relatifs au répertoire du fichier source initial. Lorsque vous utilisez D3D_COMPILE_STANDARD_FILE_INCLUDE, vous devez spécifier le nom du fichier source dans le paramètre pSourceName ; le compilateur dérive le répertoire relatif initial de pSourceName.
#define D3D_COMPILE_STANDARD_FILE_INCLUDE ((ID3DInclude*)(UINT_PTR)1)
[in, optional] pEntrypoint
Type : LPCSTR
Nom de la fonction de point d’entrée du nuanceur où commence l’exécution du nuanceur. Lorsque vous compilez à l’aide d’un profil fx (par exemple, fx_4_0, fx_5_0, etc.), D3DCompile ignore pEntrypoint. Dans ce cas, nous vous recommandons de définir pEntrypoint sur NULL , car il est recommandé de définir un paramètre de pointeur sur NULL si la fonction appelée ne l’utilise pas. Pour tous les autres profils de nuanceur, un pEntrypoint valide est requis.
[in] pTarget
Type : LPCSTR
Chaîne qui spécifie la cible du nuanceur ou l’ensemble de fonctionnalités de nuanceur à compiler. La cible du nuanceur peut être le modèle de nuanceur 2, le modèle de nuanceur 3, le modèle de nuanceur 4 ou le modèle de nuanceur 5. La cible peut également être un type d’effet (par exemple, fx_4_1). Pour plus d’informations sur les cibles prises en charge par différents profils, consultez Spécification des cibles du compilateur.
[in] Flags1
Type : UINT
Les indicateurs définis par les constantes D3D compilent.
[in] Flags2
Type : UINT
Les indicateurs définis par les constantes d’effet D3D compilent. Lorsque vous compilez un nuanceur et non un fichier d’effet, D3DCompile ignore Flags2 ; nous vous recommandons de définir Flags2 sur zéro, car il est recommandé de définir un paramètre non-pointeur sur zéro si la fonction appelée ne l’utilise pas.
[out] ppCode
Type : ID3DBlob**
Pointeur vers une variable qui reçoit un pointeur vers l’interface ID3DBlob que vous pouvez utiliser pour accéder au code compilé.
[out, optional] ppErrorMsgs
Type : ID3DBlob**
Pointeur vers une variable qui reçoit un pointeur vers l’interface ID3DBlob que vous pouvez utiliser pour accéder aux messages d’erreur du compilateur, ou NULL s’il n’y a aucune erreur.
Valeur retournée
Type : HRESULT
Retourne l’un des codes de retour Direct3D 11.
Remarques
La différence entre D3DCompile et D3DCompile2 est que cette dernière méthode accepte certains paramètres facultatifs qui peuvent être utilisés pour contrôler certains aspects de la génération du bytecode. Si cette flexibilité supplémentaire n’est pas requise, l’utilisation de D3DCompile2 n’offre aucun gain de performances.
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Windows |
En-tête | d3dcompiler.h |
Bibliothèque | d3dcompiler.lib |
DLL | d3dcompiler_47.dll |