Compartir a través de


Función D3DCompile (d3dcompiler.h)

Compile el código HLSL o un archivo de efecto en código de bytes para un destino determinado.

Sintaxis

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
);

Parámetros

[in] pSrcData

Tipo: LPCVOID

Puntero a datos de sombreador no compilados; código ASCII HLSL o un efecto compilado.

[in] SrcDataSize

Tipo: SIZE_T

Longitud de pSrcData.

[in, optional] pSourceName

Tipo: LPCSTR

Puede usar este parámetro para las cadenas que especifican mensajes de error. Si no se usa, establezca en NULL.

[in, optional] pDefines

Tipo: const D3D_SHADER_MACRO*

Matriz opcional de estructuras de D3D_SHADER_MACRO que definen macros de sombreador. Cada definición de macro contiene un nombre y una definición terminada en NULL. Si no se usa, establezca en NULL. La última estructura de la matriz actúa como terminador y debe tener todos los miembros establecidos en NULL.

[in, optional] pInclude

Tipo: ID3DInclude*

Opcional. Puntero a un id3DIncluido para controlar archivos de inclusión. Si se establece en NULL , se producirá un error de compilación si un sombreador contiene un #include. Puede pasar la macro D3D_COMPILE_STANDARD_FILE_INCLUDE , que es un puntero a un controlador de inclusión predeterminado. Este controlador de inclusión predeterminado incluye archivos relativos al directorio actual y a los archivos que son relativos al directorio del archivo de origen inicial. Al usar D3D_COMPILE_STANDARD_FILE_INCLUDE, debe especificar el nombre del archivo de origen en el parámetro pSourceName ; el compilador derivará el directorio relativo inicial de pSourceName.

#define D3D_COMPILE_STANDARD_FILE_INCLUDE ((ID3DInclude*)(UINT_PTR)1)

[in, optional] pEntrypoint

Tipo: LPCSTR

Nombre de la función de punto de entrada del sombreador donde comienza la ejecución del sombreador. Al compilar con un perfil fx (por ejemplo, fx_4_0, fx_5_0, etc.), D3DCompile omite pEntrypoint. En este caso, se recomienda establecer pEntrypoint en NULL porque es una buena práctica de programación establecer un parámetro de puntero en NULL si la función llamada no la usará. Para todos los demás perfiles de sombreador, se requiere un punto de conexión pEntry válido.

[in] pTarget

Tipo: LPCSTR

Cadena que especifica el destino del sombreador o el conjunto de características de sombreador en las que se va a compilar. El destino del sombreador puede ser el modelo de sombreador 2, el modelo de sombreador 3, el modelo de sombreador 4 o el modelo de sombreador 5. El destino también puede ser un tipo de efecto (por ejemplo, fx_4_1). Para obtener información sobre los destinos que admiten varios perfiles, vea Especificar destinos del compilador.

[in] Flags1

Tipo: UINT

Marcas definidas por constantes de compilación D3D.

[in] Flags2

Tipo: UINT

Marcas definidas por constantes de efecto de compilación D3D. Al compilar un sombreador y no un archivo de efecto, D3DCompile omite Flags2; Se recomienda establecer Flags2 en cero porque es una buena práctica de programación establecer un parámetro que no sea de puntero en cero si la función llamada no la usará.

[out] ppCode

Tipo: ID3DBlob**

Puntero a una variable que recibe un puntero a la interfaz ID3DBlob que puede usar para acceder al código compilado.

[out, optional] ppErrorMsgs

Tipo: ID3DBlob**

Puntero a una variable que recibe un puntero a la interfaz ID3DBlob que puede usar para acceder a los mensajes de error del compilador o NULL si no hay errores.

Valor devuelto

Tipo: HRESULT

Devuelve uno de los códigos de retorno de Direct3D 11.

Comentarios

La diferencia entre D3DCompile y D3DCompile2 es que el último método toma algunos parámetros opcionales que se pueden usar para controlar algunos aspectos de cómo se genera el código de bytes. Si no se requiere esta flexibilidad adicional, no hay ninguna ganancia de rendimiento al usar D3DCompile2.

Requisitos

Requisito Value
Plataforma de destino Windows
Encabezado d3dcompiler.h
Library d3dcompiler.lib
Archivo DLL d3dcompiler_47.dll

Vea también

Funciones