Compartir a través de


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

Cree un sombreador de geometría.

Sintaxis

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*

Puntero al sombreador compilado.

[in] BytecodeLength

Tipo: SIZE_T

Tamaño del sombreador de geometría compilado.

[in, optional] pClassLinkage

Tipo: ID3D11ClassLinkage*

Puntero a una interfaz de vinculación de clases (vea ID3D11ClassLinkage); el valor puede ser NULL.

[out, optional] ppGeometryShader

Tipo: ID3D11GeometryShader**

Dirección de un puntero a una interfaz ID3D11GeometryShader . Si es NULL, se validarán todos los demás parámetros y, si todos los parámetros pasan la validación, esta API devolverá S_FALSE en lugar de S_OK.

Valor devuelto

Tipo: HRESULT

Este método devuelve uno de los siguientes códigos de retorno de Direct3D 11.

Comentarios

Una vez creado, el sombreador se puede establecer en el dispositivo llamando a ID3D11DeviceContext::GSSetShader.

El entorno de ejecución de Direct3D 11.1, que está disponible a partir de Windows 8, proporciona la siguiente nueva funcionalidad para CreateGeometryShader.

Las siguientes instrucciones del modelo de sombreador 5.0 están disponibles solo para sombreadores de píxeles y sombreadores de proceso en el tiempo de ejecución de Direct3D 11.0. Para el tiempo de ejecución de Direct3D 11.1, dado que las vistas de acceso desordenadas (UAV) están disponibles en todas las fases del sombreador, puedes usar estas instrucciones en todas las fases del sombreador.

Por lo tanto, si usa las siguientes instrucciones del modelo de sombreador 5.0 en un sombreador de geometría, puede pasar correctamente el sombreador de geometría compilado a pShaderBytecode. Es decir, la llamada a CreateGeometryShader se realiza correctamente.

Si pasas un sombreador compilado a pShaderBytecode que usa cualquiera de las siguientes instrucciones en un dispositivo que no admite UAVs en todas las fases del sombreador (incluidos los controladores existentes que no se implementan para admitir UAV en cada fase del sombreador), Se produce un error en CreateGeometryShader . CreateGeometryShader también produce un error si el sombreador intenta usar una ranura UAV más allá del conjunto de ranuras UAV que admite el hardware.

Ejemplos

Ejemplo 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
Encabezado d3d11.h
Library D3D11.lib

Consulte también

ID3D11Device