Como renderizar um efeito (Direct3D 10)
Um efeito pode ser usado para armazenar informações ou renderizar usando um grupo de estado. Cada técnica especifica sombreadores de vértice, sombreadores de geometria, sombreadores de pixels, estado do sombreador, estado de amostragem e textura e outros estados de pipeline. Então, após ter organizado o estado em um efeito, você poderá encapsular o efeito de renderização resultante desse estado criando e renderizando o efeito.
Existem algumas etapas para preparar um efeito para renderização. A primeira é a compilação, que verifica um código semelhante a HLSL em relação à sintaxe da linguagem HLSL e às regras da estrutura do efeito. Você pode compilar um efeito do seu aplicativo usando chamadas à API ou pode compilar um efeito offline usando o utilitário do compilador de efeitos. Após ter compilado o efeito com sucesso, você deve criá-lo chamando um conjunto diferente (mas muito semelhante) de APIs.
Após o efeito ter sido criado, restam duas etapas para você poder usá-lo. Primeiro, você deve inicializar os valores de estado do efeito (os valores das variáveis do efeito) usando vários métodos para configurar o estado. Para algumas variáveis, isso pode ser feito assim que um efeito é criado; outras precisam ser atualizadas a cada vez que o seu aplicativo chamar o loop de renderização. Após as variáveis do efeito terem sido configuradas, você deve dizer ao runtime para renderizar o efeito aplicando uma técnica. Esses tópicos serão todos explicados mais detalhadamente abaixo.
- Compilar um efeito (Direct3D 10)
- Criar um efeito (Direct3D 10)
- Configurar o estado do efeito (Direct3D 10)
- Aplicar uma técnica (Direct3D 10)
Naturalmente, existem considerações de desempenho para o uso de efeitos. Essas considerações serão basicamente as mesmas se você não estiver usando um efeito. Como, por exemplo, minimizar o número de mudanças de estado ou organizar as variáveis que precisam ser atualizadas por frequência. Essas táticas são usadas para minimizar a quantidade de dados que precisam ser enviados da CPU para a GPU e, portanto, minimizar possíveis problemas de sincronização.
Tópicos relacionados