Compartilhar via


Método ID3D10Device::CreateInputLayout (d3d10.h)

Crie um objeto de layout de entrada para descrever os dados de buffer de entrada para o estágio input-assembler.

Sintaxe

HRESULT CreateInputLayout(
  [in]  const D3D10_INPUT_ELEMENT_DESC *pInputElementDescs,
  [in]  UINT                           NumElements,
  [in]  const void                     *pShaderBytecodeWithInputSignature,
  [in]  SIZE_T                         BytecodeLength,
  [out] ID3D10InputLayout              **ppInputLayout
);

Parâmetros

[in] pInputElementDescs

Tipo: const D3D10_INPUT_ELEMENT_DESC*

Uma matriz dos tipos de dados de entrada de estágio do assembler de entrada; cada tipo é descrito por uma descrição de elemento (consulte D3D10_INPUT_ELEMENT_DESC).

[in] NumElements

Tipo: UINT

O número de tipos de dados de entrada na matriz de elementos de entrada.

[in] pShaderBytecodeWithInputSignature

Tipo: const void*

Um ponteiro para o sombreador compilado. Para obter esse ponteiro, consulte Obtendo um ponteiro para um sombreador compilado. O código do sombreador compilado contém uma assinatura de entrada validada na matriz de elementos. Consulte Observações.

[in] BytecodeLength

Tipo: SIZE_T

Tamanho do sombreador compilado.

[out] ppInputLayout

Tipo: ID3D10InputLayout**

Um ponteiro para o objeto de layout de entrada criado (consulte Interface ID3D10InputLayout). Para validar os outros parâmetros de entrada, defina esse ponteiro como NULL e verifique se o método retorna S_FALSE.

Valor retornado

Tipo: HRESULT

Se o método for bem-sucedido, o código de retorno será S_OK. Consulte Códigos de retorno do Direct3D 10 para obter códigos de erro com falha.

Comentários

Depois de criar um objeto de layout de entrada, ele deve ser associado ao estágio input-assembler antes de chamar uma API de desenho. Consulte Introdução com o Input-Assembler Stage (Direct3D 10) para obter o código de exemplo.

Depois que um objeto de layout de entrada é criado a partir de uma assinatura de sombreador, o objeto de layout de entrada pode ser reutilizado com qualquer outro sombreador que tenha uma assinatura de entrada idêntica (semântica incluída). Isso pode simplificar a criação de objetos de layout de entrada quando você estiver trabalhando com muitos sombreadores com entradas idênticas.

Se um tipo de dados na declaração de layout de entrada não corresponder ao tipo de dados em uma assinatura de entrada de sombreador, CreateInputLayout gerará um aviso durante a compilação. O aviso é simplesmente chamar a atenção para o fato de que os dados podem ser reinterpretados quando lidos de um registro. Você pode ignorar esse aviso (se a reinterpretação for intencional) ou fazer com que os tipos de dados correspondam em ambas as declarações para eliminar o aviso. A visão geral das Regras de Conversão de Dados descreve as regras aplicadas à conversão de tipo de dados.

Diferenças entre o Direct3D 9 e o Direct3D 10:

Mapear os dados de vértice para as entradas do sombreador com um layout de entrada é uma nova maneira de fazer coisas no Direct3D 10 que melhora o desempenho.

No Direct3D 10, os dados de vértice são mapeados para as entradas do sombreador quando o objeto de layout de entrada é criado, enquanto no Direct3D 9 esse mapeamento foi feito em Tempo de desenho com base nas declarações de vértice associadas no momento, buffers de vértice e sombreadores de vértice. Fazer esse mapeamento quando o objeto de layout de entrada é criado reduz ou elimina o trabalho de vinculação extra para drivers em Tempo de desenho porque esse novo mapeamento não é mais necessário.

Requisitos

   
Plataforma de Destino Windows
Cabeçalho d3d10.h
Biblioteca D3D10.lib

Confira também

ID3D10Device Interface