Freigeben über


ID3D11Device::CreateBuffer-Methode (d3d11.h)

Erstellt einen Puffer (Vertexpuffer, Indexpuffer oder Shaderkonstantenpuffer).

Syntax

HRESULT CreateBuffer(
  [in]            const D3D11_BUFFER_DESC      *pDesc,
  [in, optional]  const D3D11_SUBRESOURCE_DATA *pInitialData,
  [out, optional] ID3D11Buffer                 **ppBuffer
);

Parameter

[in] pDesc

Typ: const D3D11_BUFFER_DESC*

Ein Zeiger auf eine D3D11_BUFFER_DESC Struktur, die den Puffer beschreibt.

[in, optional] pInitialData

Typ: const D3D11_SUBRESOURCE_DATA*

Ein Zeiger auf eine D3D11_SUBRESOURCE_DATA Struktur, die die Initialisierungsdaten beschreibt; Verwenden Sie NULL , um nur Speicherplatz zuzuweisen (mit der Ausnahme, dass er nicht NULL sein kann, wenn das Verwendungsflag D3D11_USAGE_IMMUTABLE ist).

Wenn Sie nichts an pInitialData übergeben, ist der anfängliche Inhalt des Arbeitsspeichers für den Puffer nicht definiert. In diesem Fall müssen Sie den Pufferinhalt auf andere Weise schreiben, bevor die Ressource gelesen wird.

[out, optional] ppBuffer

Typ: ID3D11Buffer**

Adresse eines Zeigers auf die ID3D11Buffer-Schnittstelle für das erstellte Pufferobjekt. Legen Sie diesen Parameter auf NULL fest, um die anderen Eingabeparameter zu überprüfen (S_FALSE einen Pass angibt).

Rückgabewert

Typ: HRESULT

Diese Methode gibt E_OUTOFMEMORY zurück, wenn nicht genügend Arbeitsspeicher zum Erstellen des Puffers vorhanden ist. Weitere mögliche Rückgabewerte finden Sie unter Direct3D 11-Rückgabecodes .

Hinweise

Beispielcode finden Sie unter Vorgehensweise: Erstellen eines Vertexpuffers, Vorgehensweise: Erstellen eines Indexpuffers oder Vorgehensweise: Erstellen eines Konstantenpuffers.

Für einen Konstantenpuffer (BindFlags von D3D11_BUFFER_DESC auf D3D11_BIND_CONSTANT_BUFFER festgelegt) müssen Sie den ByteWidth-Wert von D3D11_BUFFER_DESC in Vielfachen von 16 und kleiner als oder gleich D3D11_REQ_CONSTANT_BUFFER_ELEMENT_COUNT festlegen.

Die Direct3D 11.1-Runtime, die unter Windows 8 und höheren Betriebssystemen verfügbar ist, bietet die folgenden neuen Funktionen für CreateBuffer:

Sie können einen Konstantenpuffer erstellen, der größer als die maximale Konstantepuffergröße ist, auf die ein Shader zugreifen kann (4096 Konstanten mit 32 Bit*4 Komponenten – 64 KB). Wenn Sie den Konstantenpuffer an die Pipeline binden (z. B. über PSSetConstantBuffers oder PSSetConstantBuffers1), können Sie einen Bereich des Puffers definieren, auf den der Shader zugreifen kann, der innerhalb des konstanten Grenzwerts von 4096 passt.

Die Direct3D 11.1-Runtime (verfügbar in Windows 8 und höher) emuliert dieses Feature für die Featureebene 9.1, 9.2 und 9.3; Daher wird dieses Feature für die Featureebene 9.1, 9.2 und 9.3 unterstützt.

Dieses Feature ist immer für neue Treiber für Featureebene 10 und höher verfügbar.

Bei Laufzeiten, die älter als Direct3D 11.1 sind, schlägt ein Aufruf von CreateBuffer zum Anfordern eines Konstantenpuffers, der größer als 4096 ist, fehl.

Anforderungen

   
Zielplattform Windows
Kopfzeile d3d11.h
Bibliothek D3D11.lib

Weitere Informationen

ID3D11Device