Camadas de renderização de gráficos

Uma camada de renderização define um nível de capacidade e desempenho de hardware gráfico para um dispositivo que executa um aplicativo WPF.

Hardware de gráficos

Os recursos do hardware gráfico que mais afetam os níveis de camada de renderização são:

  • RAM de Vídeo A quantidade de memória de vídeo no hardware gráfico determina o tamanho e o número de buffers que podem ser usados para compor gráficos.

  • Sombreador de Pixel Um sombreador de pixel é uma função de processamento gráfico que calcula efeitos por pixel. Dependendo da resolução dos gráficos exibidos, pode haver muitos milhões de pixels que precisam ser processados para cada quadro de vídeo.

  • Sombreador de Vértice O sombreador de vértice é uma função de processamento gráfico que realiza operações matemáticas nos dados de vértice do objeto.

  • Suporte Multitextura Suporte multitextura refere-se à capacidade de aplicar duas ou mais texturas distintas durante uma operação de mesclagem em um objeto gráfico 3D. O grau de suporte a multitextura é determinado pelo número de unidades de multitextura no hardware gráfico.

Definições da camada de processamento

Os recursos do hardware gráfico determinam a capacidade de renderização de um aplicativo WPF. O sistema WPF define três camadas de renderização:

  • Camada de Renderização 0 Sem aceleração de hardware gráfico. Todos os recursos gráficos usam a aceleração de software. O nível de versão do DirectX é menor que a versão 9.0.

  • Camada de Renderização 1 Alguns recursos gráficos usam aceleração de hardware gráfico. O nível de versão do DirectX é maior ou igual à versão 9.0.

  • Camada de Renderização 2 A maioria dos recursos gráficos usa aceleração de hardware gráfico. O nível de versão do DirectX é maior ou igual à versão 9.0.

A RenderCapability.Tier propriedade permite que você recupere a camada de renderização em tempo de execução do aplicativo. Você pode usar o nível de renderização para determinar se o dispositivo dá suporte a certas características aceleradas por hardware. Seu aplicativo então pode adotar diferentes caminhos de código no tempo de execução, dependendo da camada de renderização que tem suporte no dispositivo.

Camada de renderização 0

Um valor de nível de renderização 0 significa que não há nenhum gráficos aceleração de hardware disponível para o aplicativo no dispositivo. Nesse nível, você deve assumir que todos os gráficos serão renderizados por software sem aceleração de hardware. A funcionalidade desta camada corresponde a uma versão do DirectX inferior a 9.0.

Camada de Renderização 1 e Camada de Renderização 2

Observação

A partir do .NET Framework 4, a camada de renderização 1 foi redefinida para incluir apenas hardware gráfico que ofereça suporte ao DirectX 9.0 ou superior. O hardware gráfico que suporta DirectX 7 ou 8 é agora definido como camada de renderização 0.

Um valor de camada de renderização de 1 ou 2 significa que a maioria dos recursos gráficos do WPF usará aceleração de hardware se os recursos necessários do sistema estiverem disponíveis e não tiverem sido esgotados. Isso corresponde a uma versão do DirectX maior ou igual a 9.0.

A tabela a seguir mostra as diferenças nos requisitos de hardware gráfico para a camada de renderização 1 e a camada 2 de renderização:

Recurso Camada 1 Camada 2
Versão do DirectX Deve ser maior ou igual a 9,0. Deve ser maior ou igual a 9,0.
RAM de vídeo Deve ser maior ou igual a 60 MB. Deve ser maior ou igual a 120 MB.
Sombreador de pixel O nível de versão deve ser maior ou igual a 2.0. O nível de versão deve ser maior ou igual a 2.0.
Sombreador de vértice Sem exigência. O nível de versão deve ser maior ou igual a 2.0.
Unidades multitextura Sem exigência. Número de unidades deve ser maior ou igual a 4.

Os seguintes recursos e capacidades são acelerados por hardware para camada de renderização 1 e 2:

Recurso Observações
Renderização 2D A maioria das renderizações 2D tem suporte.
Rasterização 3D A maioria das rasterizações 3D tem suporte.
Filtro anisotrópico 3D WPF tenta usar filtragem anisotrópica ao renderizar conteúdo 3D. O filtro anisotrópico se refere a melhorar a qualidade da imagem de texturas em superfícies distantes e profundamente angular em relação a câmera.
Mapeamento de MIP 3D O WPF tenta usar o mapeamento MIP ao renderizar conteúdo 3D. O mapeamento MIP melhora a qualidade da renderização de textura quando uma textura ocupa um campo de visão menor em um Viewport3Darquivo .
Gradientes radiais Enquanto suportado, evite o uso de RadialGradientBrush em objetos grandes.
Cálculos de iluminação 3D O WPF executa iluminação por vértice, o que significa que uma intensidade de luz deve ser calculada em cada vértice para cada material aplicado a uma malha.
Renderização de texto A renderização de fonte de subpixel usa sombreadores de pixel disponíveis no hardware gráfico.

Os seguintes recursos e capacidades são acelerados por hardware apenas para a camada de renderização 2:

Recurso Observações
Suavização 3D A suavização de borda 3D é suportada apenas em sistemas operacionais que oferecem suporte ao WDDM (Windows Display Driver Model), como o Windows Vista e o Windows 7.

Os seguintes recursos e capacidades não são acelerados por hardware:

Recurso Observações
Conteúdo impresso Todo o conteúdo impresso é renderizado usando o pipeline de software WPF.
Conteúdo rasterizado que usa RenderTargetBitmap Qualquer conteúdo renderizado usando o Render método de RenderTargetBitmap.
Conteúdo lado a lado que usa TileBrush Qualquer conteúdo lado a lado no qual a TileMode propriedade do TileBrush é definida como Tile.
Superfícies que excedam o tamanho máximo de textura do hardware de gráficos Para a maioria dos hardwares gráficos, superfícies grandes tem 2048x2048 ou 4096x4096 pixels de tamanho.
Qualquer operação cujo requisito de RAM de vídeo excede a memória do hardware de gráficos Você pode monitorar o uso de memória RAM de vídeo do aplicativo usando a ferramenta Perforator incluída no pacote de desempenho WPF no SDK do Windows.
Janelas em camadas As janelas em camadas permitem que os aplicativos WPF renderizem conteúdo para a tela em uma janela não retangular. Em sistemas operacionais que oferecem suporte ao WDDM (Windows Display Driver Model), como o Windows Vista e o Windows 7, as janelas em camadas são aceleradas por hardware. Em outros sistemas, como o Windows XP, janelas em camadas são renderizadas por software sem aceleração de hardware.

Você pode habilitar janelas em camadas no WPF definindo as seguintes Window propriedades:

- WindowStyle = None
- AllowsTransparency = true
- Background = Transparent

Outros recursos

Os recursos a seguir podem ajudá-lo a analisar as características de desempenho do seu aplicativo WPF.

Configurações do Registro de renderização dos elementos gráficos

O WPF fornece quatro configurações do Registro para controlar a renderização do WPF:

Configuração Descrição
Desabilitar Opção de Aceleração de hardware Especifica se a aceleração de hardware deve ser habilitada.
Valor máximo de Multisample Especifica o grau de amostragem múltipla para suavização de borda de conteúdo 3D.
Driver de vídeo configuração de data necessário Especifica se o sistema desabilita a aceleração de hardware para drivers lançados antes de novembro de 2004.
Use a opção de rasterizador de referência Especifica se o WPF deve usar o rasterizador de referência.

Essas configurações podem ser acessadas por qualquer utilitário de configuração externo que saiba como fazer referência às configurações do Registro do WPF. Essas configurações também podem ser criadas ou modificadas acessando os valores diretamente usando o Editor do Registro do Windows. Para obter mais informações, consulte as configurações de Registro de renderização de gráficos.

Ferramentas de criação de perfil de desempenho do WPF

O WPF fornece um conjunto de ferramentas de criação de perfil de desempenho que permitem analisar o comportamento em tempo de execução do aplicativo e determinar os tipos de otimizações de desempenho que você pode aplicar. A tabela a seguir lista as ferramentas de criação de perfil de desempenho incluídas na ferramenta SDK do Windows, WPF Performance Suite:

Ferramenta Descrição
Perforator Use para analisar o comportamento de renderização.
Visual Profiler Use para criar o perfil do uso de serviços WPF, como layout e manipulação de eventos, por elementos na árvore visual.

O pacote de desempenho WPF fornece uma exibição gráfica rica em dados de desempenho. Para obter mais informações sobre ferramentas de desempenho do WPF, consulte Pacote de desempenho WPF.

Ferramenta de diagnóstico do DirectX

A Ferramenta de Diagnóstico do DirectX, Dxdiag.exe, foi projetada para ajudá-lo a solucionar problemas relacionados ao DirectX. A pasta de instalação padrão para a ferramenta de diagnóstico do DirectX é:

~\Windows\System32

Quando você executa a ferramenta de diagnóstico do DirectX, a janela principal contém um conjunto de guias que permitem exibir e diagnosticar informações relacionadas ao DirectX. Por exemplo, a guia Sistema fornece informações do sistema sobre o computador e especifica a versão do DirectX instalada no computador.

Screenshot: DirectX Diagnostic Tool
Janela principal da Ferramenta de diagnóstico do DirectX

Confira também