Partilhar via


Práticas recomendadas para DirectComposition

Observação

Para aplicativos no Windows 10, recomendamos o uso de APIs Windows.UI.Composition em vez de DirectComposition. Para saber mais, veja Modernizar seu aplicativo da área de trabalho usando a camada Visual.

Este tópico descreve as práticas recomendadas para usar o Microsoft DirectComposition.

Melhores práticas

A tabela a seguir apresenta as práticas recomendadas para trabalhar com visuais do Microsoft DirectComposition.

Prática Descrição
Depois de criar um dispositivo DirectComposition, chame o IDCompositionDevice::CheckDeviceState método em resposta a cada mensagem WM_PAINT para garantir que o dispositivo ainda é válido.
Se o dispositivo Microsoft DirectX Graphics Infrastructure (DXGI) for perdido, o dispositivo DirectComposition associado ao dispositivo DXGI também será perdido. Quando deteta um dispositivo perdido, o DirectComposition envia a mensagem WM_PAINT para todas as janelas. Chamar CheckDeviceState em resposta a cada mensagem WM_PAINT permite determinar se o objeto de dispositivo DirectComposition ainda é válido e, se não, tomar medidas para recuperar conteúdo.
Para obter mais informações, consulte o objeto de dispositivo .
Crie apenas o número de elementos visuais necessários para uma composição ou animação e destrua os elementos visuais imediatamente após o DirectComposition terminar de usá-los.
O DirectComposition usa a unidade de processamento gráfico (GPU), um recurso que seu aplicativo compartilha com outros aplicativos e o sistema operacional. Essa prática garante que todos os aplicativos e o sistema operacional recebam recursos de GPU adequados.
Para obter mais informações, consulte Visuals.
Não oculte elementos visuais definindo a opacidade como 0%; Em vez disso, remova os elementos visuais da árvore visual.
Definir opacidade como 0% requer mais recursos do sistema do que removê-los da árvore visual.
Para mais informações, veja Opacidade e Árvore visual .
Não oculte um visual aplicando um retângulo de clipe vazio (tamanho zero) a um visual. Em vez disso, remova o visual da árvore visual.
A remoção de um visual da árvore visual resulta em melhor desempenho do que a aplicação de um retângulo de clipe vazio.
Para obter mais informações, consulte Clipping.
Não aplique um retângulo de clipe a um visual se o retângulo do clipe não for necessário, como um retângulo de clipe que inclua todo o conteúdo de bitmap do visual.
Retângulos de recorte desnecessários prejudicam o desempenho do sistema.
Para obter mais informações, consulte Clipping.
Se você precisar de um bitmap grande e de cor única, crie uma superfície de bitmap menor e aplique uma transformação de escala em vez de criar uma superfície de tamanho normal.
A aplicação de uma transformação em escala a uma superfície menor usa menos recursos do sistema do que uma superfície de tamanho normal.
Para obter mais informações, consulte objetos de bitmap e transformações.
Evite aplicar transformações 3D a vários níveis de uma árvore visual, como a um pai e seu(s) descendente(s).
A aplicação de transformações 3D a vários níveis de uma árvore visual pode produzir resultados não intencionais porque as transformações 3D não são multiplicadas na árvore. Por exemplo, uma rotação de 90 graus em torno do eixo y em uma criança, e uma rotação de 90 graus em torno do eixo y em um pai, resulta em ambos os visuais sendo girados para nada.
Para obter mais informações, consulte Effects.

Considerações de segurança

Os artigos a seguir fornecem orientação para escrever código C++ seguro.

Como usar o DirectComposition