Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Puede hospedar contenido de Direct3D9 mediante la D3DImage clase . Hospedar contenido de Direct3D9 puede afectar al rendimiento de la aplicación. En este tema se describen los procedimientos recomendados para optimizar el rendimiento al hospedar contenido de Direct3D9 en una aplicación de Windows Presentation Foundation (WPF). Estos procedimientos recomendados incluyen cómo usar D3DImage y procedimientos recomendados cuando se usa Windows Vista, Windows XP y pantallas de varios monitores.
Nota:
Para obtener ejemplos de código que muestran estos procedimientos recomendados, consulte Interoperation de WPF y Direct3D9.
Uso de D3DImage Con moderación
El contenido de Direct3D9 hospedado en una D3DImage instancia no se representa tan rápido como en una aplicación direct3D pura. Copiar la superficie y vaciar el búfer de comandos puede ser costosas operaciones. A medida que aumenta el número de D3DImage instancias, se produce más vaciado y el rendimiento se degrada. Por lo tanto, debe usar D3DImage con moderación.
Procedimientos recomendados en Windows Vista
Para obtener el mejor rendimiento en Windows Vista con una pantalla configurada para usar el modelo de controlador de pantalla de Windows (WDDM), cree la superficie de Direct3D9 en un IDirect3DDevice9Ex dispositivo. Esto permite el uso compartido de superficies. En Windows Vista, la tarjeta de vídeo debe admitir las capacidades del D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES y D3DCAPS2_CANSHARERESOURCE controlador. Cualquier otra configuración hace que la superficie se copie a través del software, lo que reduce significativamente el rendimiento.
Nota:
Si Windows Vista tiene una pantalla configurada para usar el modelo de controlador de pantalla de Windows XP (XDDM), la superficie siempre se copia a través del software, independientemente de la configuración. Con la configuración adecuada y la tarjeta de vídeo, verás un mejor rendimiento en Windows Vista cuando uses el WDDM porque las copias de superficie se realizan en hardware.
Procedimientos recomendados en Windows XP
Para obtener el mejor rendimiento en Windows XP, que usa el modelo de controlador de pantalla de Windows XP (XDDM), cree una superficie bloqueable que se comporte correctamente cuando se llama al método IDirect3DSurface9::GetDC. Internamente, el BitBlt método transfiere la superficie entre dispositivos en hardware. El GetDC método siempre funciona en superficies XRGB. Sin embargo, si el equipo cliente ejecuta Windows XP con SP3 o SP2, y si el cliente también tiene el parche para la característica de ventanas en capas, este método solo funciona en superficies ARGB. La tarjeta de vídeo debe admitir la funcionalidad del D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES controlador.
Una profundidad de pantalla de escritorio de 16 bits puede reducir significativamente el rendimiento. Se recomienda un escritorio de 32 bits.
Si está desarrollando para Windows Vista y Windows XP, pruebe el rendimiento en Windows XP. Quedarse sin memoria de vídeo en Windows XP es un problema. Además, D3DImage en Windows XP se usa más memoria de vídeo y ancho de banda que WDDM de Windows Vista, debido a una copia de memoria de vídeo adicional necesaria. Por lo tanto, puedes esperar que el rendimiento sea peor en Windows XP que en Windows Vista para el mismo hardware de vídeo.
Nota:
XDDM está disponible en Windows XP y Windows Vista; sin embargo, WDDM solo está disponible en Windows Vista.
Procedimientos recomendados generales
Al crear el dispositivo, use la D3DCREATE_MULTITHREADED marca de creación. Esto reduce el rendimiento, pero el sistema de representación de WPF llama a métodos en este dispositivo desde otro subproceso. Asegúrese de seguir correctamente el protocolo de bloqueo para que no accedan al dispositivo dos subprocesos al mismo tiempo.
Si la representación se realiza en un subproceso administrado de WPF, se recomienda encarecidamente crear el dispositivo con la D3DCREATE_FPU_PRESERVE marca de creación. Sin esta configuración, la representación D3D puede reducir la precisión de las operaciones de precisión doble de WPF e introducir problemas de representación.
El mosaico de un D3DImage es rápido, a menos que se azuleje una superficie que no sea una potencia de 2 sin soporte de hardware, o si se azuleja un DrawingBrush o VisualBrush que contiene un D3DImage.
Procedimientos recomendados para pantallas de varios monitores
Si usa un equipo que tiene varios monitores, debe seguir los procedimientos recomendados descritos anteriormente. También hay algunas consideraciones de rendimiento adicionales para una configuración de varios monitores.
Al crear el búfer de reserva, se crea en un dispositivo y un adaptador específicos, pero WPF puede mostrar el búfer frontal en cualquier adaptador. La copia entre adaptadores para actualizar el búfer frontal puede ser muy costosa. En Windows Vista que está configurado para usar WDDM con varias tarjetas de vídeo y con un IDirect3DDevice9Ex dispositivo, si el búfer frontal está en un adaptador diferente pero sigue siendo la misma tarjeta de vídeo, no hay ninguna penalización de rendimiento. Sin embargo, en Windows XP y el XDDM con varias tarjetas de vídeo, hay una pérdida de rendimiento significativa cuando el búfer delantero se muestra en un adaptador diferente del búfer trasero. Para obtener más información, consulte Interoperación de WPF y Direct3D9.
Resumen del rendimiento
En la tabla siguiente se muestra el rendimiento de la actualización del búfer frontal como función del sistema operativo, el formato de píxeles y la capacidad de bloqueo de superficie. Se supone que el búfer frontal y el búfer de reserva están en el mismo adaptador. En función de la configuración del adaptador, las actualizaciones de hardware suelen ser mucho más rápidas que las actualizaciones de software.
| Formato de píxel de superficie | Windows Vista, WDDM y 9Ex | Otras configuraciones de Windows Vista | Windows XP SP3 o SP2 con revisión | Windows XP SP2 |
|---|---|---|---|---|
| D3DFMT_X8R8G8B8 (no se puede bloquear) | Actualización de hardware | Actualización de software | Actualización de software | Actualización de software |
| D3DFMT_X8R8G8B8 (bloqueable) | Actualización de hardware | Actualización de software | Actualización de hardware | Actualización de hardware |
| D3DFMT_A8R8G8B8 (no se puede bloquear) | Actualización de hardware | Actualización de software | Actualización de software | Actualización de software |
| D3DFMT_A8R8G8B8 (bloqueable) | Actualización de hardware | Actualización de software | Actualización de hardware | Actualización de software |
Consulte también
.NET Desktop feedback