Freigeben über


ID3D11Device::CreateGeometryShaderWithStreamOutput-Methode (d3d11.h)

Erstellt einen Geometry-Shader, der in Streamingausgabepuffer schreiben kann.

Syntax

HRESULT CreateGeometryShaderWithStreamOutput(
  [in]            const void                       *pShaderBytecode,
  [in]            SIZE_T                           BytecodeLength,
  [in, optional]  const D3D11_SO_DECLARATION_ENTRY *pSODeclaration,
  [in]            UINT                             NumEntries,
  [in, optional]  const UINT                       *pBufferStrides,
  [in]            UINT                             NumStrides,
  [in]            UINT                             RasterizedStream,
  [in, optional]  ID3D11ClassLinkage               *pClassLinkage,
  [out, optional] ID3D11GeometryShader             **ppGeometryShader
);

Parameter

[in] pShaderBytecode

Typ: const void*

Ein Zeiger auf den kompilierten Geometrie-Shader für einen Standardgeometrieshader plus Streamausgabe. Informationen zum Abrufen dieses Zeigers finden Sie unter Abrufen eines Zeigers auf einen kompilierten Shader.

Um die Streamausgabe ohne Verwendung eines Geometrie-Shaders zu erstellen, übergeben Sie einen Zeiger auf die Ausgabesignatur für die vorherige Phase. Um diese Ausgabesignatur zu erhalten, rufen Sie die Compilerfunktion D3DGetOutputSignatureBlob auf. Sie können auch einen Zeiger auf den kompilierten Shader für die vorherige Phase übergeben (z. B. die Vertex-Shader- oder Domänen-Shader-Phase). Dieser kompilierte Shader stellt die Ausgabesignatur für die Daten bereit.

[in] BytecodeLength

Typ: SIZE_T

Größe des kompilierten Geometrie-Shaders.

[in, optional] pSODeclaration

Typ: const D3D11_SO_DECLARATION_ENTRY*

Zeiger auf ein D3D11_SO_DECLARATION_ENTRY Array. Kann nicht NULL sein, wenn NumEntries > 0 sind.

[in] NumEntries

Typ: UINT

Die Anzahl der Einträge in der Streamausgabedeklaration ( reicht von 0 bis D3D11_SO_STREAM_COUNT * D3D11_SO_OUTPUT_COMPONENT_COUNT ).

[in, optional] pBufferStrides

Typ: const UINT*

Ein Array von Pufferschritten; jeder Schritt ist die Größe eines Elements für diesen Puffer.

[in] NumStrides

Typ: UINT

Die Anzahl der Schritte (oder Puffer) in pBufferStrides (Bereich von 0 bis D3D11_SO_BUFFER_SLOT_COUNT).

[in] RasterizedStream

Typ: UINT

Die Indexnummer des Datenstroms, der an die Rasterizerphase gesendet werden soll (reicht von 0 bis D3D11_SO_STREAM_COUNT - 1). Wird auf D3D11_SO_NO_RASTERIZED_STREAM festgelegt, wenn kein Datenstrom gerastert werden soll.

[in, optional] pClassLinkage

Typ: ID3D11ClassLinkage*

Ein Zeiger auf eine Klassenverknüpfungsschnittstelle (siehe ID3D11ClassLinkage); der Wert kann NULL sein.

[out, optional] ppGeometryShader

Typ: ID3D11GeometryShader**

Adresse eines Zeigers auf eine ID3D11GeometryShader-Schnittstelle , die den erstellten Geometrieshader darstellt. Legen Sie dies auf NULL fest, um die anderen Parameter zu überprüfen. Wenn die Validierung erfolgreich ist, gibt die Methode S_FALSE anstelle von S_OK zurück.

Rückgabewert

Typ: HRESULT

Diese Methode gibt einen der Direct3D 11-Rückgabecodes zurück.

Hinweise

Weitere Informationen zur Verwendung von CreateGeometryShaderWithStreamOutput finden Sie unter Erstellen eines Geometry-Shader-Objekts mit Stream Ausgabe.

Die Direct3D 11.1-Runtime, die ab Windows 8 verfügbar ist, bietet die folgenden neuen Funktionen für CreateGeometryShaderWithStreamOutput.

Die folgenden Shadermodell 5.0-Anweisungen sind nur für Pixel-Shader und Compute-Shader in der Direct3D 11.0-Runtime verfügbar. Für die Direct3D 11.1-Runtime können Sie diese Anweisungen in allen Shaderphasen verwenden, da ungeordnete Zugriffsansichten (UAV) in allen Shaderphasen verfügbar sind.

Wenn Sie also die folgenden Shadermodell 5.0-Anweisungen in einem Geometrie-Shader verwenden, können Sie den kompilierten Geometrie-Shader erfolgreich an pShaderBytecode übergeben. Das heißt, der Aufruf von CreateGeometryShaderWithStreamOutput ist erfolgreich.

Wenn Sie einen kompilierten Shader an pShaderBytecode übergeben, der eine der folgenden Anweisungen auf einem Gerät verwendet, das uaVs nicht in jeder Shaderphase unterstützt (einschließlich vorhandener Treiber, die nicht zur Unterstützung von UAVs in jeder Shaderphase implementiert sind), schlägt CreateGeometryShaderWithStreamOutput fehl. CreateGeometryShaderWithStreamOutput schlägt auch fehl, wenn der Shader versucht, einen UAV-Slot zu verwenden, der über den satz von der Hardware unterstützten UAV-Slots hinausgeht.

Windows Phone 8: Diese API wird unterstützt.

Anforderungen

Anforderung Wert
Zielplattform Windows
Kopfzeile d3d11.h
Bibliothek D3D11.lib

Weitere Informationen

ID3D11Device