Condividi tramite


Metodo ID3D11Device::CreateGeometryShaderWithStreamOutput (d3d11.h)

Crea uno shader geometry in grado di scrivere nei buffer di output di streaming.

Sintassi

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
);

Parametri

[in] pShaderBytecode

Tipo: const void*

Puntatore allo shader geometry compilato per uno shader geometry shader standard più output del flusso. Per informazioni su come ottenere questo puntatore, vedi Recupero di un puntatore a uno shader compilato.

Per creare l'output del flusso senza usare uno shader geometry, passare un puntatore alla firma di output per la fase precedente. Per ottenere questa firma di output, chiamare la funzione del compilatore D3DGetOutputSignatureBlob . È anche possibile passare un puntatore allo shader compilato per la fase precedente, ad esempio la fase vertex-shader o la fase domain-shader. Questo shader compilato fornisce la firma di output per i dati.

[in] BytecodeLength

Tipo: SIZE_T

Dimensioni dello shader geometry compilato.

[in, optional] pSODeclaration

Tipo: const D3D11_SO_DECLARATION_ENTRY*

Puntatore a una matrice di D3D11_SO_DECLARATION_ENTRY . Non può essere NULL se NumEntries > 0.

[in] NumEntries

Tipo: UINT

Numero di voci nella dichiarazione di output del flusso ( compreso tra 0 e D3D11_SO_STREAM_COUNT * D3D11_SO_OUTPUT_COMPONENT_COUNT ).

[in, optional] pBufferStrides

Tipo: const UINT*

Una matrice di passi del buffer; ogni stride è la dimensione di un elemento per tale buffer.

[in] NumStrides

Tipo: UINT

Numero di passi (o buffer) in pBufferStrides (compreso tra 0 e D3D11_SO_BUFFER_SLOT_COUNT).

[in] RasterizedStream

Tipo: UINT

Numero di indice del flusso da inviare alla fase di rasterizzazione (compreso tra 0 e D3D11_SO_STREAM_COUNT - 1). Impostare su D3D11_SO_NO_RASTERIZED_STREAM se non deve essere rasterizzato alcun flusso.

[in, optional] pClassLinkage

Tipo: ID3D11ClassLinkage*

Puntatore a un'interfaccia di collegamento di classe (vedere ID3D11ClassLinkage); il valore può essere NULL.

[out, optional] ppGeometryShader

Tipo: ID3D11GeometryShader**

Indirizzo di un puntatore a un'interfaccia ID3D11GeometryShader che rappresenta lo shader geometry creato. Impostare questo valore su NULL per convalidare gli altri parametri; se la convalida viene superata, il metodo restituirà S_FALSE anziché S_OK.

Valore restituito

Tipo: HRESULT

Questo metodo restituisce uno dei codici restituiti Direct3D 11.

Commenti

Per altre info sull'uso di CreateGeometryShaderWithStreamOutput, vedi Creare un oggetto Geometry-Shader con Stream Output.

Il runtime di Direct3D 11.1, disponibile a partire da Windows 8, offre le nuove funzionalità seguenti per CreateGeometryShaderWithStreamOutput.

Le istruzioni del modello di shader 5.0 seguenti sono disponibili solo per pixel shader e compute shader nel runtime di Direct3D 11.0. Per il runtime direct3D 11.1, poiché le visualizzazioni di accesso non ordinato sono disponibili in tutte le fasi dello shader, è possibile usare queste istruzioni in tutte le fasi dello shader.

Pertanto, se si usano le istruzioni del modello di shader 5.0 seguenti in un geometry shader, è possibile passare correttamente lo shader geometry compilato a pShaderBytecode. Ovvero, la chiamata a CreateGeometryShaderWithStreamOutput ha esito positivo.

Se si passa uno shader compilato a pShaderBytecode che usa una delle istruzioni seguenti in un dispositivo che non supporta UAV in ogni fase dello shader (inclusi i driver esistenti che non vengono implementati per supportare UAV in ogni fase dello shader), CreateGeometryShaderWithStreamOutput ha esito negativo. CreateGeometryShaderWithStreamOutput ha esito negativo anche se lo shader tenta di usare uno slot UAV oltre il set di slot UAV supportati dall'hardware.

Windows Phone 8: questa API è supportata.

Requisiti

Requisito Valore
Piattaforma di destinazione Windows
Intestazione d3d11.h
Libreria D3D11.lib

Vedi anche

ID3D11Device