ID3D10Device::CreateInputLayout-Methode (d3d10.h)

Erstellen Sie ein Eingabelayoutobjekt, um die Eingabepufferdaten für die Input-Assembler-Phase zu beschreiben.

Syntax

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

Parameter

[in] pInputElementDescs

Typ: const D3D10_INPUT_ELEMENT_DESC*

Ein Array der Eingabedatentypen der Eingabe-Assembler-Phase; jeder Typ wird durch eine Elementbeschreibung beschrieben (siehe D3D10_INPUT_ELEMENT_DESC).

[in] NumElements

Typ: UINT

Die Anzahl der Eingabedatentypen im Array der Eingabeelemente.

[in] pShaderBytecodeWithInputSignature

Typ: const void*

Ein Zeiger auf den kompilierten Shader. Informationen zum Abrufen dieses Zeigers finden Sie unter Abrufen eines Zeigers auf einen kompilierten Shader. Der kompilierte Shadercode enthält eine Eingabesignatur , die anhand des Arrays von Elementen überprüft wird. Siehe Bemerkungen.

[in] BytecodeLength

Typ: SIZE_T

Größe des kompilierten Shaders.

[out] ppInputLayout

Typ: ID3D10InputLayout**

Ein Zeiger auf das erstellte Eingabelayoutobjekt (siehe ID3D10InputLayout-Schnittstelle). Um die anderen Eingabeparameter zu überprüfen, legen Sie diesen Zeiger auf NULL fest, und überprüfen Sie, ob die Methode S_FALSE zurückgibt.

Rückgabewert

Typ: HRESULT

Wenn die Methode erfolgreich ist, wird der Rückgabecode S_OK. Fehlercodes finden Sie unter Direct3D 10-Rückgabecodes .

Hinweise

Nach dem Erstellen eines Eingabelayoutobjekts muss es an die Eingabe-Assembler-Phase gebunden werden, bevor eine Zeichnungs-API aufgerufen wird. Beispielcode finden Sie unter Erste Schritte mit der Input-Assembler Stage (Direct3D 10).

Sobald ein Eingabelayoutobjekt aus einer Shadersignatur erstellt wurde, kann das Eingabelayoutobjekt mit jedem anderen Shader wiederverwendet werden, der eine identische Eingabesignatur aufweist (Semantik enthalten). Dies kann die Erstellung von Eingabelayoutobjekten vereinfachen, wenn Sie mit vielen Shadern mit identischen Eingaben arbeiten.

Wenn ein Datentyp in der Eingabelayoutdeklaration nicht mit dem Datentyp in einer Shadereingabesignatur übereinstimmt, generiert CreateInputLayout während der Kompilierung eine Warnung. Die Warnung besteht darin, einfach darauf aufmerksam zu machen, dass die Daten beim Lesen aus einem Register möglicherweise neu interpretiert werden. Sie können diese Warnung entweder ignorieren (wenn die Neuinterpretation beabsichtigt ist) oder die Übereinstimmung der Datentypen in beiden Deklarationen sicherstellen, um die Warnung zu beseitigen. In der Übersicht über Die Datenkonvertierungsregeln werden die Regeln beschrieben, die für die Datentypkonvertierung angewendet werden.

Unterschiede zwischen Direct3D 9 und Direct3D 10:

Das Zuordnen der Scheitelpunktdaten zu den Shadereingaben mit einem Eingabelayout ist eine neue Möglichkeit, Dinge in Direct3D 10 zu erledigen, die die Leistung verbessert.

In Direct3D 10 werden die Vertexdaten den Shadereingaben beim Erstellen des Eingabelayoutobjekts zugeordnet, während diese Zuordnung in Direct3D 9 zur Zeichnungszeit basierend auf den aktuell gebundenen Vertexdeklarationen, Vertexpuffern und Vertex-Shadern erfolgt ist. Durch diese Zuordnung beim Erstellen des Eingabelayoutobjekts wird die zusätzliche Verknüpfungsarbeit für Treiber zur Draw-Zeit reduziert oder eliminiert, da diese Neuzuordnung nicht mehr erforderlich ist.

Anforderungen

   
Zielplattform Windows
Kopfzeile d3d10.h
Bibliothek D3D10.lib

Weitere Informationen

ID3D10Geräteschnittstelle