Partilhar 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.

Pipeline de renderização por hardware

Um dos fatores mais importantes para determinar o desempenho do WPF é que ele é vinculado à renderização — quanto mais pixels você tiver que renderizar, maior será o custo de desempenho. No entanto, quanto mais renderização puder ser descarregada para a unidade de processamento gráfico (GPU), mais benefícios de desempenho você poderá obter. O pipeline de renderização de hardware de aplicativos WPF tira o máximo partido dos recursos do Microsoft DirectX em hardware que suporta pelo menos a versão 7.0 do Microsoft DirectX. Outras otimizações podem ser obtidas pelo hardware que suporta os recursos Microsoft DirectX versão 7.0 e PixelShader 2.0+.

Pipeline de renderização de software

O pipeline de renderização de software WPF é totalmente vinculado à CPU. O WPF aproveita os conjuntos de instruções SSE e SSE2 na CPU para implementar um rasterizador de software otimizado e com todos os recursos. O fallback para software é contínuo sempre que a funcionalidade do aplicativo não pode ser renderizada usando o pipeline de renderização de 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 fundo azul, que renderiza uma imagem ligeiramente transparente sobre ele, você 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 fundo azul.

Camadas de renderização de gráficos

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

Para conseguir isso, o WPF fornece funcionalidade para determinar a capacidade gráfica de um sistema em tempo de execução. A capacidade gráfica é determinada pela categorização da placa de vídeo como uma das três camadas de capacidade de renderização. O WPF expõe uma API que permite que um aplicativo consulte a camada de capacidade de renderização. Seu aplicativo pode então tomar caminhos de código diferentes em tempo de execução, dependendo da camada de renderização suportada pelo 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.

  • Pixel Shader 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 Multitextura O suporte a multitextura refere-se à capacidade de aplicar duas ou mais texturas distintas durante uma operação de mistura em um objeto gráfico 3D. O grau de suporte multitextura é determinado pelo número de unidades multitextura no hardware gráfico.

Os recursos de sombreador de pixel, sombreador de vértice e multitextura são usados para definir níveis de versão específicos 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:

  • Nível de renderização 0 Sem aceleração de hardware gráfico. O nível de versão do DirectX é inferior à 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.

  • Nível 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.

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

Ver também