Metodo ID3D10Device::CreateInputLayout (d3d10.h)

Creare un oggetto di layout di input per descrivere i dati del buffer di input per la fase input-assembler.

Sintassi

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

Parametri

[in] pInputElementDescs

Tipo: const D3D10_INPUT_ELEMENT_DESC*

Matrice dei tipi di dati di input della fase dell'assembler di input; ogni tipo è descritto da una descrizione dell'elemento (vedere D3D10_INPUT_ELEMENT_DESC).

[in] NumElements

Tipo: UINT

Numero di tipi di dati di input nella matrice di elementi di input.

[in] pShaderBytecodeWithInputSignature

Tipo: const void*

Puntatore allo shader compilato. Per ottenere questo puntatore, vedere Recupero di un puntatore a uno shader compilato. Il codice shader compilato contiene una firma di input convalidata rispetto alla matrice di elementi. Vedere la sezione Osservazioni.

[in] BytecodeLength

Tipo: SIZE_T

Dimensioni dello shader compilato.

[out] ppInputLayout

Tipo: ID3D10InputLayout**

Puntatore all'oggetto di layout di input creato (vedere ID3D10InputLayout Interface). Per convalidare gli altri parametri di input, impostare questo puntatore su NULL e verificare che il metodo restituisca S_FALSE.

Valore restituito

Tipo: HRESULT

Se il metodo ha esito positivo, il codice restituito viene S_OK. Vedere Codici restituiti Direct3D 10 per i codici di errore non riusciti.

Commenti

Dopo aver creato un oggetto layout di input, deve essere associato alla fase dell'assembler di input prima di chiamare un'API di disegno. Vedere Začínáme con il codice di esempio Input-Assembler Stage (Direct3D 10).

Dopo aver creato un oggetto layout di input da una firma shader, l'oggetto layout di input può essere riutilizzato con qualsiasi altro shader con una firma di input identica (semantica inclusa). In questo modo è possibile semplificare la creazione di oggetti layout di input quando si utilizzano molti shader con input identici.

Se un tipo di dati nella dichiarazione di input-layout non corrisponde al tipo di dati in una firma di input shader, CreateInputLayout genererà un avviso durante la compilazione. L'avviso è semplicemente quello di richiamare l'attenzione sul fatto che i dati possono essere reinterpretati durante la lettura da un registro. È possibile ignorare questo avviso (se la reinterpretazione è intenzionale) o fare in modo che i tipi di dati corrispondano in entrambe le dichiarazioni per eliminare l'avviso. La panoramica delle regole di conversione dei dati descrive le regole applicate per la conversione dei tipi di dati.

Differenze tra Direct3D 9 e Direct3D 10:

Il mapping dei dati dei vertici agli input dello shader con un layout di input è un nuovo modo di eseguire le operazioni in Direct3D 10 che migliora le prestazioni.

In Direct3D 10 i dati dei vertici vengono mappati agli input dello shader quando viene creato l'oggetto layout di input, mentre in Direct3D 9 questo mapping è stato eseguito in fase di disegno in base alle dichiarazioni dei vertici, ai vertex buffer e ai vertex shader attualmente associati. Questa operazione di mapping quando viene creato l'oggetto layout di input riduce o elimina il lavoro di collegamento aggiuntivo per i driver in fase di disegno perché questo nuovo mapping non è più necessario.

Requisiti

   
Piattaforma di destinazione Windows
Intestazione d3d10.h
Libreria D3D10.lib

Vedi anche

Interfaccia ID3D10Device