Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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, casco, domínio, geometria, sombreadores de pixel e computação), textura e estado do amostrador usados pelos sombreadores e outro estado de pipeline não programável. 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.
Um conjunto de técnicas pode ser agrupado em um grupo (que usa a sintaxe "fxgroup"). As técnicas podem ser agrupadas de qualquer forma. Por exemplo, podem ser criados vários grupos, um por material; cada material poderia ter uma técnica para cada nível de hardware; Cada técnica teria um conjunto de passes que definem o material no hardware específico.
Nesta secção
| Tópico | Descrição |
|---|---|
|
Estado Organizador em Efeito |
Com o Direct3D 11, o estado de efeito para determinados estágios de pipeline é organizado por estruturas. |
| Interfaces de sistema Effect |
O sistema de efeitos define várias interfaces para gerenciar o estado do efeito. |
|
Interfaces Especializadas |
ID3DX11EffectVariable tem vários métodos para transmitir a interface para o tipo específico de interface que você precisa. |
|
interfaces e classes no Effects |
Há muitas maneiras de usar classes e interfaces no Effects 11. |
|
Renderizando um efeito |
Um efeito pode ser usado para armazenar informações ou para renderizar usando um grupo de estado. |
|
Clonagem de um efeito |
A clonagem de um efeito cria uma segunda cópia quase idêntica do efeito. |
|
de sintaxe do Stream out |
Um sombreador de geometria com saída de fluxo é declarado com uma sintaxe específica. |
|
Diferenças entre os Efeitos 10 e os Efeitos 11 |
Este tópico mostra as diferenças entre os Efeitos 10 e os Efeitos 11. |
Tópicos relacionados
-
Guia de programação para Direct3D 11