Compartir a través de


Procedimientos recomendados para DirectComposition

Nota

Para las aplicaciones en Windows 10, se recomienda usar Windows. UI. API de composición en lugar de DirectComposition. Para obtener más información, consulta Modernize your desktop app using the Visual layer (Modernización de la aplicación de escritorio mediante la capa visual).

En este tema se describen los procedimientos recomendados para usar Microsoft DirectComposition.

Procedimientos recomendados

En la tabla siguiente se presentan los procedimientos recomendados para trabajar con objetos visuales de Microsoft DirectComposition.

Práctica Descripción
Después de crear un dispositivo DirectComposition, llame al método IDCompositionDevice::CheckDeviceState en respuesta a cada mensaje de WM_PAINT para asegurarse de que el dispositivo sigue siendo válido.
Si se pierde el dispositivo microsoft DirectX Graphics Infrastructure (DXGI), también se pierde el dispositivo DirectComposition asociado al dispositivo DXGI. Cuando detecta un dispositivo perdido, DirectComposition envía el mensaje WM_PAINT a todas las ventanas. Llamar a CheckDeviceState en respuesta a cada mensaje de WM_PAINT le permite determinar si el objeto de dispositivo DirectComposition sigue siendo válido y, si no es así, realizar pasos para recuperar el contenido.
Para obtener más información, consulte Device object (Objeto de dispositivo).
Cree solo el número de objetos visuales necesarios para una composición o animación y destruya los objetos visuales inmediatamente después de que DirectComposition termine de usarlos.
DirectComposition usa la unidad de procesamiento de gráficos (GPU), un recurso que la aplicación comparte con otras aplicaciones y el sistema operativo. Esta práctica garantiza que todas las aplicaciones y el sistema operativo reciban los recursos adecuados de GPU.
Para obtener más información, vea Objetos visuales.
No oculte los objetos visuales estableciendo opacidad en 0%; en su lugar, quite los objetos visuales del árbol visual.
Establecer opacidad en 0 % requiere más recursos del sistema que quitarlos del árbol visual.
Para obtener más información, vea Opacidad y árbol visual.
No oculte un objeto visual aplicando un rectángulo de clip vacío (de tamaño cero) a un objeto visual. En su lugar, quite el objeto visual del árbol visual.
Quitar un objeto visual del árbol visual da como resultado un mejor rendimiento que aplicar un rectángulo de clip vacío.
Para obtener más información, consulte Recorte.
No aplique un rectángulo de recorte a un objeto visual si no se necesita el rectángulo de recorte, como un rectángulo de clip que incluya todo el contenido del mapa de bits del objeto visual.
Los rectángulos de recorte innecesarios dañan el rendimiento del sistema.
Para obtener más información, consulte Recorte.
Si necesita un mapa de bits grande de un solo color, cree una superficie de mapa de bits más pequeña y, a continuación, aplique una transformación de escala en lugar de crear una superficie de tamaño completo.
Aplicar una transformación de escala a una superficie más pequeña usa menos recursos del sistema que una superficie de tamaño completo.
Para obtener más información, vea Objetos y transformaciones de mapade bits.
Evite aplicar transformaciones 3D a varios niveles de un árbol visual, como a un elemento primario y sus descendientes.
La aplicación de transformaciones 3D a varios niveles de un árbol visual puede producir resultados no deseados porque las transformaciones 3D no se multiplican en el árbol. Por ejemplo, una rotación de 90 grados alrededor del eje Y en un elemento secundario y un giro de 90 grados alrededor del eje Y en un elemento primario, da como resultado que ambos objetos visuales se giran a nada.
Para obtener más información, consulte Effects (Efectos).

Consideraciones sobre la seguridad

En los artículos siguientes se proporcionan instrucciones para escribir código de C++ seguro.

Uso de DirectComposition