Compartir a través de


Cómo: Crear un sombreador de casco

Un sombreador de casco es el primero de tres fases que funcionan conjuntamente para implementar la teselación. Las salidas del sombreador de casco impulsan la fase de teselador, así como la fase del sombreador de dominio. En este tema se muestra cómo crear un sombreador de casco.

Un sombreador de casco transforma un conjunto de puntos de control de entrada (de un sombreador de vértices) en un conjunto de puntos de control de salida. El número de puntos de entrada y salida puede variar en el contenido y el número en función de la transformación (una transformación típica sería una transformación base).

Un sombreador de casco también genera información de constantes de revisión, como factores de teselación, para un sombreador de dominio y el teselador. La fase de teselador de función fija usa los factores de teselación, así como otro estado declarado en un sombreador de casco para determinar cuánto se debe teselar.

Para crear un sombreador de casco

  1. Diseñar un sombreador de casco. Vea Cómo: Diseñar un sombreador de casco.

  2. Compilación del código del sombreador

  3. Cree un objeto de sombreador de casco mediante ID3D11Device::CreateHullShader.

    HRESULT CreateHullShader(
      const void *pShaderBytecode,  
      SIZE_T BytecodeLength,  
      ID3D11ClassLinkage *pClassLinkage,  
      ID3D11HullShader **ppHullShader
    );
    
  4. Inicialice la fase de canalización mediante ID3D11DeviceContext::HSSetShader.

    void HSSetShader(
      ID3D11HullShader *pHullShader,  
      ID3D11ClassInstance *const *ppClassInstances,
      UINT NumClassInstances
    );
    

Un sombreador de dominio debe enlazarse a la canalización si un sombreador de casco está enlazado. En concreto, no es válido transmitir directamente los puntos de control del sombreador de casco con el sombreador de geometría.

Cómo usar Direct3D 11

Información general sobre teselación