Partilhar via


Efeitos (Direct3D 10)

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

O primeiro passo é organizar o estado que você deseja controlar em um efeito. Isso inclui o estado do sombreador (vértice, geometria e sombreadores de pixel), textura e estado do amostrador usados pelos sombreadores e outros estados de pipeline não programáveis. Você pode criar um efeito na memória como uma cadeia de texto, mas, normalmente, o tamanho fica grande o suficiente para armazenar o estado do 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 verificar a sintaxe HLSL, bem como a sintaxe da estrutura de efeito), inicializar o estado do efeito por meio de chamadas de API e modificar seu loop de renderização para chamar as APIs de renderização.

Um efeito encapsula todo o estado de renderização exigido por um determinado efeito em uma única função de renderização chamada técnica. Um passo é um subconjunto de uma técnica, que contém o estado de renderização. Para implementar um efeito de renderização de várias passagens, implemente uma ou mais passagens dentro de uma técnica. Por exemplo, digamos que você queria renderizar alguma geometria com um conjunto de buffers de profundidade/estêncil e, em seguida, desenhar alguns sprites em cima disso. Você pode implementar a renderização de geometria na primeira passagem e o desenho de sprite na segunda passagem. Para renderizar o efeito, basta renderizar ambas as passagens em seu loop de renderização. Você pode implementar qualquer número de técnicas em um efeito. Naturalmente, 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 hardware diferente. Isso permite que um aplicativo faça o downgrade normal do desempenho com base nos recursos de hardware detetados.

Guia de programação para Direct3D 10