Compartilhar via


Função D3DCompile (d3dcompiler.h)

Compile o código HLSL ou um arquivo de efeito no código de byte para um determinado destino.

Sintaxe

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

Um ponteiro para dados de sombreador não compilados; código ASCII HLSL ou um efeito compilado.

[in] SrcDataSize

Tipo: SIZE_T

Comprimento de pSrcData.

[in, optional] pSourceName

Tipo: LPCSTR

Você pode usar esse parâmetro para cadeias de caracteres que especificam mensagens de erro. Se não for usado, defina como NULL.

[in, optional] pDefines

Tipo: const D3D_SHADER_MACRO*

Uma matriz opcional de estruturas de D3D_SHADER_MACRO que definem macros de sombreador. Cada definição de macro contém um nome e uma definição terminada em nulo. Se não for usado, defina como NULL. A última estrutura na matriz serve como um terminador e deve ter todos os membros definidos como NULL.

[in, optional] pInclude

Tipo: ID3DInclude*

Opcional. Um ponteiro para um ID3DInclude para lidar com arquivos de inclusão. Definir isso como NULL causará um erro de compilação se um sombreador contiver um #include. Você pode passar a macro D3D_COMPILE_STANDARD_FILE_INCLUDE , que é um ponteiro para um manipulador de inclusão padrão. Esse manipulador de inclusão padrão inclui arquivos relativos ao diretório atual e arquivos relativos ao diretório do arquivo de origem inicial. Ao usar D3D_COMPILE_STANDARD_FILE_INCLUDE, você deve especificar o nome do arquivo de origem no parâmetro pSourceName ; o compilador derivará o diretório relativo inicial do pSourceName.

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

[in, optional] pEntrypoint

Tipo: LPCSTR

O nome da função de ponto de entrada do sombreador em que a execução do sombreador começa. Quando você compila usando um perfil fx (por exemplo, fx_4_0, fx_5_0 e assim por diante), D3DCompile ignora pEntrypoint. Nesse caso, recomendamos que você defina pEntrypoint como NULL porque é uma boa prática de programação definir um parâmetro de ponteiro como NULL se a função chamada não o usar. Para todos os outros perfis de sombreador, um pEntrypoint válido é necessário.

[in] pTarget

Tipo: LPCSTR

Uma cadeia de caracteres que especifica o destino do sombreador ou o conjunto de recursos de sombreador para compilar. O destino do sombreador pode ser o modelo de sombreador 2, o modelo de sombreador 3, o modelo de sombreador 4 ou o modelo de sombreador 5. O destino também pode ser um tipo de efeito (por exemplo, fx_4_1). Para obter informações sobre os destinos aos quais vários perfis dão suporte, consulte Especificando destinos do compilador.

[in] Flags1

Tipo: UINT

Sinalizadores definidos por constantes de compilação D3D.

[in] Flags2

Tipo: UINT

Sinalizadores definidos por constantes de efeito de compilação D3D. Quando você compila um sombreador e não um arquivo de efeito, D3DCompile ignora Flags2; Recomendamos que você defina Flags2 como zero porque é uma boa prática de programação definir um parâmetro nãopointer como zero se a função chamada não o usar.

[out] ppCode

Tipo: ID3DBlob**

Um ponteiro para uma variável que recebe um ponteiro para a interface ID3DBlob que você pode usar para acessar o código compilado.

[out, optional] ppErrorMsgs

Tipo: ID3DBlob**

Um ponteiro para uma variável que recebe um ponteiro para a interface ID3DBlob que você pode usar para acessar mensagens de erro do compilador ou NULL se não houver erros.

Retornar valor

Tipo: HRESULT

Retorna um dos códigos de retorno do Direct3D 11.

Comentários

A diferença entre D3DCompile e D3DCompile2 é que o último método usa alguns parâmetros opcionais que podem ser usados para controlar alguns aspectos de como o código de byte é gerado. Se essa flexibilidade extra não for necessária, não haverá ganho de desempenho usando D3DCompile2.

Requisitos

Requisito Valor
Plataforma de Destino Windows
Cabeçalho d3dcompiler.h
Biblioteca d3dcompiler.lib
DLL d3dcompiler_47.dll

Confira também

Funções