Partager via


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

Voir aussi

Fonctions