Partilhar via


Práticas recomendadas para DirectComposition

Observação

Para aplicativos no Windows 10, é recomendável usar Windows. UI. APIs de composição em vez de DirectComposition. Para obter mais informações, consulte Modernizar seu aplicativo da área de trabalho usando a camada Visual.

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

Práticas recomendadas

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 método IDCompositionDevice::CheckDeviceState em resposta a cada mensagem WM_PAINT para garantir que o dispositivo ainda seja válido.
Se o dispositivo DXGI (Infraestrutura Gráfica) do Microsoft DirectX for perdido, o dispositivo DirectComposition associado ao dispositivo DXGI também será perdido. Quando detecta 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 Device.
Crie apenas o número de visuais necessários para uma composição ou animação e destrua os visuais imediatamente após o DirectComposition terminar de usá-los.
O DirectComposition usa a GPU (unidade de processamento de elementos gráficos), 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 Visuais.
Não ocultar visuais definindo a opacidade como 0%; em vez disso, remova visuais da árvore visual.
Definir a opacidade como 0% requer mais recursos do sistema do que removê-los da árvore visual.
Para obter mais informações, consulte Opacidade e Árvore visual.
Não oculte um visual aplicando um retângulo de clipe vazio (de tamanho zero) a um visual. Em vez disso, remova o visual da árvore visual.
Remover um visual da árvore visual resulta em melhor desempenho do que aplicar um retângulo de clipe vazio.
Para obter mais informações, consulte Recorte.
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 inclui todo o conteúdo de bitmap do visual.
Retângulos de clipe desnecessários prejudicam o desempenho do sistema.
Para obter mais informações, consulte Recorte.
Se você precisar de um bitmap grande 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 completo.
Aplicar uma transformação de escala a uma superfície menor usa menos recursos do sistema do que uma superfície de tamanho real.
Para obter mais informações, consulte Objetos e Transformações do Bitmap.
Evite aplicar transformações 3D a vários níveis de uma árvore visual, como um pai e seus descendentes.
Aplicar 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, veja Efeitos.

Considerações de segurança

Os artigos a seguir fornecem diretrizes para escrever código C++ seguro.

Como usar DirectComposition