Compartilhar via


Efeitos (Direct3D 10)

Um efeito DirectX é uma coleção de estado de pipeline, definida por expressões escritas em HLSL e alguma sintaxe específica para a estrutura de efeito. Depois de compilar um efeito, use as APIs de estrutura de efeito para renderizar. A funcionalidade de efeito pode variar de algo tão simples quanto um sombreador de vértice que transforma geometria e um sombreador de pixel que gera uma cor sólida, até uma técnica de renderização que requer várias passagens, usa cada estágio do pipeline gráfico e manipula o estado do sombreador, bem como o estado do pipeline não associado aos sombreadores programáveis.

A primeira etapa é organizar o estado que você deseja controlar em um efeito. Isso inclui o estado do sombreador (sombreadores de vértice, geometria e pixel), textura e estado de amostra usado pelos sombreadores e outro estado de pipeline não programável. Você pode criar um efeito na memória como uma cadeia de caracteres de texto, mas, normalmente, o tamanho fica grande o suficiente para armazenar o estado de efeito em um arquivo de efeito (um arquivo de texto que termina em uma extensão .fx). Para usar um efeito, você deve compilá-lo (para marcar sintaxe HLSL, bem como sintaxe de estrutura de efeito), inicializar o estado do efeito por meio de chamadas à API e modificar o loop de renderização para chamar as APIs de renderização.

Um efeito encapsula todo o estado de renderização exigido por um efeito específico em uma única função de renderização chamada técnica. Uma passagem é um subconjunto de uma técnica, que contém o estado de renderização. Para implementar um efeito de renderização de passagem múltipla, implemente uma ou mais passagens dentro de uma técnica. Por exemplo, digamos que você queria renderizar um pouco de geometria com um conjunto de buffers de profundidade/estêncil e, em seguida, desenhar alguns sprites sobre isso. Você pode implementar a renderização de geometria na primeira passagem e o desenho de sprite na segunda passagem. Para renderizar o efeito, você simplesmente renderiza ambas as passagens no loop de renderização. Você pode implementar qualquer número de técnicas em um efeito . Claro, quanto maior o número de técnicas, maior o tempo de compilação para o efeito. Uma maneira de explorar essa funcionalidade é criar efeitos com técnicas projetadas para serem executadas em hardwares diferentes. Isso permite que um aplicativo faça downgrade normal do desempenho com base nos recursos de hardware detectados.

Guia de programação para Direct3D 10