Freigeben über


ID3D11DeviceContext::GSSetConstantBuffers-Methode (d3d11.h)

Legt die konstanten Puffer fest, die von der Pipelinephase des Geometry-Shaders verwendet werden.

Syntax

void GSSetConstantBuffers(
  [in]           UINT         StartSlot,
  [in]           UINT         NumBuffers,
  [in, optional] ID3D11Buffer * const *ppConstantBuffers
);

Parameter

[in] StartSlot

Typ: UINT

Indizieren sie in das nullbasierte Array des Geräts, um mit dem Festlegen von Konstantenpuffern zu beginnen (Bereiche von 0 bis D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - 1).

[in] NumBuffers

Typ: UINT

Anzahl der festzulegenden Puffer (Bereiche von 0 bis D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - StartSlot).

[in, optional] ppConstantBuffers

Typ: ID3D11Buffer*

Array von Konstantenpuffern (siehe ID3D11Buffer), die dem Gerät zugewiesen werden.

Rückgabewert

Keine

Bemerkungen

Die -Methode enthält einen Verweis auf die übergebenen Schnittstellen. Dies unterscheidet sich vom Verhalten des Gerätezustands in Direct3D 10.

Sie können die ID3D11ShaderReflectionConstantBuffer-Schnittstelle nicht verwenden, um Informationen darüber abzurufen, was derzeit im Gerätekontext an die Pipeline gebunden ist. Sie können jedoch ID3D11ShaderReflectionConstantBuffer verwenden, um Informationen aus einem kompilierten Shader abzurufen. Sie können beispielsweise ID3D11ShaderReflectionConstantBuffer und ID3D11ShaderReflectionVariable verwenden, um den Slot zu bestimmen, in dem ein Geometrieshader einen konstanten Puffer erwartet. Sie können diese Slotnummer dann an GSSetConstantBuffers übergeben, um den Konstantenpuffer festzulegen. Sie können die D3D11Reflect-Funktion aufrufen, um die Adresse eines Zeigers auf die ID3D11ShaderReflection-Schnittstelle abzurufen, und dann ID3D11ShaderReflection::GetConstantBufferByName aufrufen, um einen Zeiger auf ID3D11ShaderReflectionConstantBuffer zu erhalten.

Die Direct3D 11.1-Runtime, die ab Windows 8 verfügbar ist, kann eine größere Anzahl von ID3D11Buffer-Ressourcen an den Shader binden als die maximale konstante Puffergröße, die von Shadern unterstützt wird (4096 Konstanten –jeweils 4 32-Bit-Komponenten). Wenn Sie einen so großen Puffer binden, kann der Shader nur auf die ersten 40964 32-Bit-Komponentenkonstanten im Puffer zugreifen, als ob 4096 Konstanten die volle Größe des Puffers sind.

Wenn die Anwendung möchte, dass der Shader auf andere Teile des Puffers zugreift, muss sie stattdessen die GSSetConstantBuffers1-Methode aufrufen.

Anforderungen

   
Zielplattform Windows
Kopfzeile d3d11.h
Bibliothek D3D11.lib

Weitere Informationen

ID3D11DeviceContext