Compartilhar via


Método ID3D11Device::CreateGeometryShaderWithStreamOutput (d3d11.h)

Cria um sombreador de geometria que pode gravar em buffers de saída de streaming.

Sintaxe

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

Parâmetros

[in] pShaderBytecode

Tipo: const void*

Um ponteiro para o sombreador de geometria compilado para um sombreador de geometria padrão mais a saída de fluxo. Para obter informações sobre como obter esse ponteiro, consulte Obtendo um ponteiro para um sombreador compilado.

Para criar a saída do fluxo sem usar um sombreador de geometria, passe um ponteiro para a assinatura de saída do estágio anterior. Para obter essa assinatura de saída, chame a função do compilador D3DGetOutputSignatureBlob . Você também pode passar um ponteiro para o sombreador compilado para o estágio anterior (por exemplo, o estágio de sombreador de vértice ou o estágio do sombreador de domínio). Esse sombreador compilado fornece a assinatura de saída para os dados.

[in] BytecodeLength

Tipo: SIZE_T

Tamanho do sombreador de geometria compilado.

[in, optional] pSODeclaration

Tipo: const D3D11_SO_DECLARATION_ENTRY*

Ponteiro para uma matriz de D3D11_SO_DECLARATION_ENTRY . Não pode ser NULL se NumEntries > 0.

[in] NumEntries

Tipo: UINT

O número de entradas na declaração de saída do fluxo ( varia de 0 a D3D11_SO_STREAM_COUNT * D3D11_SO_OUTPUT_COMPONENT_COUNT ).

[in, optional] pBufferStrides

Tipo: const UINT*

Uma matriz de passos de buffer; cada passo é o tamanho de um elemento para esse buffer.

[in] NumStrides

Tipo: UINT

O número de passos (ou buffers) em pBufferStrides (varia de 0 a D3D11_SO_BUFFER_SLOT_COUNT).

[in] RasterizedStream

Tipo: UINT

O número de índice do fluxo a ser enviado para o estágio de rasterizador (varia de 0 a D3D11_SO_STREAM_COUNT - 1). Defina como D3D11_SO_NO_RASTERIZED_STREAM se nenhum fluxo for rasterizado.

[in, optional] pClassLinkage

Tipo: ID3D11ClassLinkage*

Um ponteiro para uma interface de vinculação de classe (consulte ID3D11ClassLinkage); o valor pode ser NULL.

[out, optional] ppGeometryShader

Tipo: ID3D11GeometryShader**

Endereço de um ponteiro para uma interface ID3D11GeometryShader , representando o sombreador de geometria que foi criado. Defina isso como NULL para validar os outros parâmetros; se a validação for aprovada, o método retornará S_FALSE em vez de S_OK.

Retornar valor

Tipo: HRESULT

Esse método retorna um dos códigos de retorno do Direct3D 11.

Comentários

Para obter mais informações sobre como usar CreateGeometryShaderWithStreamOutput, consulte Criar um objeto Geometry-Shader com saída Stream.

O runtime do Direct3D 11.1, que está disponível a partir do Windows 8, fornece a nova funcionalidade a seguir para CreateGeometryShaderWithStreamOutput.

As instruções do modelo de sombreador 5.0 a seguir estão disponíveis apenas para sombreadores de pixel e sombreadores de computação no runtime do Direct3D 11.0. Para o runtime do Direct3D 11.1, como as exibições de acesso não ordenadas (UAV) estão disponíveis em todos os estágios do sombreador, você pode usar essas instruções em todos os estágios do sombreador.

Portanto, se você usar as instruções do modelo de sombreador 5.0 a seguir em um sombreador de geometria, poderá passar com êxito o sombreador de geometria compilado para pShaderBytecode. Ou seja, a chamada para CreateGeometryShaderWithStreamOutput é bem-sucedida.

Se você passar um sombreador compilado para pShaderBytecode que usa qualquer uma das instruções a seguir em um dispositivo que não dá suporte a UAVs em todos os estágios do sombreador (incluindo drivers existentes que não são implementados para dar suporte a UAVs em cada estágio de sombreador), CreateGeometryShaderWithStreamOutput falhará. CreateGeometryShaderWithStreamOutput também falhará se o sombreador tentar usar um slot UAV além do conjunto de slots UAV compatíveis com o hardware.

Windows Phone 8: há suporte para essa API.

Requisitos

Requisito Valor
Plataforma de Destino Windows
Cabeçalho d3d11.h
Biblioteca D3D11.lib

Confira também

ID3D11Device