Compartilhar via


Otimizando o desempenho: aproveitando o hardware

A arquitetura interna do WPF tem dois pipelines de renderização, hardware e software. Este tópico fornece informações sobre esses pipelines de renderização para ajudá-lo a tomar decisões sobre otimizações de desempenho de seus aplicativos.

Fluxo de Renderização de Hardware

Um dos fatores mais importantes na determinação do desempenho do WPF é que ele está associado à renderização, quanto mais pixels você precisar renderizar, maior o custo de desempenho. No entanto, quanto mais renderização puder ser descarregada para a GPU (unidade de processamento de gráficos), mais benefícios de desempenho você pode obter. O pipeline de renderização de hardware do aplicativo WPF aproveita ao máximo os recursos do Microsoft DirectX em hardware que dão suporte a um mínimo do Microsoft DirectX versão 7.0. Outras otimizações podem ser obtidas pelo hardware que dá suporte aos recursos do Microsoft DirectX versão 7.0 e PixelShader 2.0+.

Pipeline de Renderização de Software

O pipeline de renderização de software do WPF é totalmente dependente da CPU. O WPF aproveita os conjuntos de instruções SSE e SSE2 na CPU para implementar um rasterizador de software otimizado e completo. O recurso de fallback para software é sem interrupções sempre que a função do aplicativo não pode ser renderizada usando o pipeline de renderização por hardware.

O maior problema de desempenho que você encontrará ao renderizar no modo de software está relacionado à taxa de preenchimento, que é definida como o número de pixels que você está renderizando. Se você estiver preocupado com o desempenho no modo de renderização de software, tente minimizar o número de vezes que um pixel é redesenhado. Por exemplo, se você tiver um aplicativo com um plano de fundo azul, que renderiza uma imagem ligeiramente transparente sobre ele, renderizará todos os pixels no aplicativo duas vezes. Como resultado, levará o dobro do tempo para renderizar o aplicativo com a imagem do que se você tivesse apenas o plano de fundo azul.

Camadas de renderização de gráficos

Pode ser muito difícil prever a configuração de hardware na qual seu aplicativo será executado. No entanto, talvez você queira considerar um design que permita que seu aplicativo alterne perfeitamente os recursos ao executar em hardware diferente, para que ele possa aproveitar ao máximo cada configuração de hardware diferente.

Para isso, o WPF fornece funcionalidade para determinar a capacidade gráfica de um sistema em runtime. A funcionalidade gráfica é determinada categorizando a placa de vídeo como uma das três camadas de funcionalidade de renderização. O WPF expõe uma API que permite que um aplicativo consulte a camada de funcionalidade de renderização. Em seguida, seu aplicativo pode tomar caminhos de código diferentes em tempo de execução, dependendo da camada de renderização compatível com o hardware.

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 os efeitos por pixel. Dependendo da resolução dos gráficos exibidos, pode haver vários milhões de pixels que precisam ser processados para cada quadro de exibição.

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

  • Suporte a multitexturas O 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 à multitextura é determinado pelo número de unidades de multitextura no hardware gráfico.

Os recursos de sombreador de pixel, sombreador de vértice e multitextura são usados para definir níveis específicos de versão do DirectX, que, por sua vez, são usados para definir as diferentes camadas de renderização no WPF.

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 Nenhuma aceleração de hardware gráfico. O nível de versão do DirectX é menor que a versão 7.0.

  • Nível de Renderização 1 Aceleração parcial de hardware gráfico. O nível de versão do DirectX é maior ou igual à versão 7.0 e menor que a versão 9.0.

  • Renderização Nível 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.

Para obter mais informações sobre as camadas de renderização do WPF, consulte Camadas de Renderização de Gráficos.

Consulte também