Como inicializar o estágio do mosaico

Em geral, o mosaico expande o modelo compacto definido pelo usuário de um patch em geometria que contém uma quantidade programável de detalhes. A geometria normalmente é um conjunto de triângulos que representa a geometria detalhada da superfície. Este tópico mostra como inicializar o estágio do mosaico.

O estágio do mosaico é o segundo de três estágios que trabalham juntos para mosaico ou bloco de uma superfície. O primeiro estágio é o estágio de sombreador de casco; ele opera uma vez por patch e configura como o próximo estágio (o mosaico de função fixa) se comporta. Um sombreador de casco também gera saídas definidas pelo usuário, como pontos de controle de saída e constantes de patch que são enviadas além do mosaico diretamente para o terceiro estágio, o estágio de sombreador de domínio. Um sombreador de domínio é invocado uma vez por ponto de estágio do mosaico e avalia as posições da superfície.

O estágio do mosaico é um estágio de função fixo, não há sombreador a ser gerado e nenhum estado a ser definido. Ele recebe todo o seu estado de instalação do estágio de sombreador de casco; depois que o estágio do sombreador de casco for inicializado, o estágio do mosaico será inicializado automaticamente.

Para inicializar o estágio do mosaico

  • Inicialize o estágio do sombreador de casco usando ID3D11DeviceContext::HSSetShader.

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

    ppClassInstances é um ponteiro para uma matriz de interfaces de sombreador, representada por ponteiros ID3D11ClassInstance e o número de interfaces, representadas por NumClassInstances. Se não forem usados, esses parâmetros poderão ser definidos como NULL e 0, respectivamente.

Depois que o estágio do sombreador de casco for inicializado, você também deverá inicializar o estágio de sombreador de domínio.

Como usar o Direct3D 11

Visão geral de mosaico