Condividi tramite


Metodo ID3D11Device::CreateGeometryShader (d3d11.h)

Creare uno shader geometry.

Sintassi

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

Parametri

[in] pShaderBytecode

Tipo: const void*

Puntatore allo shader compilato.

[in] BytecodeLength

Tipo: SIZE_T

Dimensioni dello shader geometry compilato.

[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 . Se è NULL, tutti gli altri parametri verranno convalidati e se tutti i parametri superano la convalida, questa API restituirà S_FALSE anziché S_OK.

Valore restituito

Tipo: HRESULT

Questo metodo restituisce uno dei codici restituiti Direct3D 11 seguenti.

Commenti

Dopo la creazione, lo shader può essere impostato sul dispositivo chiamando ID3D11DeviceContext::GSSetShader.

Il runtime direct3D 11.1, disponibile a partire da Windows 8, fornisce le nuove funzionalità seguenti per CreateGeometryShader.

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 CreateGeometryShader 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 le UAV in ogni fase dello shader), CreateGeometryShader ha esito negativo. CreateGeometryShader ha esito negativo anche se lo shader tenta di usare uno slot UAV oltre il set di slot UAV supportati dall'hardware.

Esempio

Esempio di utilizzo


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

Requisiti

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

Vedi anche

ID3D11Device