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.
- dcl_uav_typed
- dcl_uav_raw
- dcl_uav_structured
- ld_raw
- ld_structured
- ld_uav_typed
- store_raw
- store_structured
- store_uav_typed
- sync_uglobal
- Alle Atome und unmittelbaren Atome (z. B. atomic_and und imm_atomic_and)
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Windows |
Kopfzeile | d3d11.h |
Bibliothek | D3D11.lib |