Compartilhar via


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

Crie um sombreador de geometria.

Sintaxe

HRESULT CreateGeometryShader(
  [in]            const void           *pShaderBytecode,
  [in]            SIZE_T               BytecodeLength,
  [in, optional]  ID3D11ClassLinkage   *pClassLinkage,
  [out, optional] ID3D11GeometryShader **ppGeometryShader
);

Parâmetros

[in] pShaderBytecode

Tipo: const void*

Um ponteiro para o sombreador compilado.

[in] BytecodeLength

Tipo: SIZE_T

Tamanho do sombreador de geometria compilado.

[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 . Se for NULL, todos os outros parâmetros serão validados e, se todos os parâmetros passarem pela validação, essa API retornará S_FALSE em vez de S_OK.

Valor retornado

Tipo: HRESULT

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

Comentários

Depois de criado, o sombreador pode ser definido para o dispositivo chamando ID3D11DeviceContext::GSSetShader.

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

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 CreateGeometryShader é 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), o CreateGeometryShader falhará. CreateGeometryShader também falhará se o sombreador tentar usar um slot UAV além do conjunto de slots UAV compatíveis com o hardware.

Exemplos

Exemplo de uso


ID3D11GeometryShader*       g_pGeometryShader11 = NULL;
ID3DBlob* pGeometryShaderBuffer = NULL;
ID3DBlob * errorbuffer = NULL;

D3DX11CompileFromFile( str, NULL, NULL, "GS", "gs_4_0", dwShaderFlags, 0, NULL,
                                         &pGeometryShaderBuffer, &errorbuffer, NULL );

pd3dDevice->CreateGeometryShader( pGeometryShaderBuffer->GetBufferPointer(),
               pGeometryShaderBuffer->GetBufferSize(), NULL, &g_pGeometryShader11 );
     
          

Requisitos

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

Confira também

ID3D11Device