2010-12-08 9 views

Respuesta

37

Su pregunta no proporciona ninguna especificación sobre lo que le produce confusión al leer los artículos en Internet, o qué es exactamente lo que quiere saber sobre la aceleración de hardware en WPF. Por lo tanto, intentaré darle un resumen general, aunque simplificado, de cómo funciona.

Para obtener una representación acelerada por GPU, Windows Presentation Foundation (WPF) representa y presenta gráficos a través de la interconexión de DirectX. La GPU o unidad de procesamiento de gráficos es el chip que alimenta su tarjeta de video. Básicamente, la aceleración de hardware descarga el trabajo de renderizar gráficos en su aplicación WPF desde el procesador principal (CPU) de su computadora al procesador de la tarjeta de video (GPU). Al usar hardware en su tarjeta de video que está específicamente diseñado para representar gráficos en lugar de funciones de software ejecutadas por la CPU, el rendimiento de los gráficos y la interfaz de usuario de su aplicación aumentan o se aceleran. El objetivo final es que las rutinas gráficas complejas se conviertan en encuadernadas (es decir, limitadas por las capacidades de la GPU), en lugar de con destino al procesador (es decir, limitadas por las capacidades y la velocidad de la CPU de la computadora). Esto libera la CPU para hacer otro trabajo, aprovecha al máximo las capacidades gráficas únicas de su tarjeta de video y acelera el rendimiento de su aplicación cada vez que el usuario se actualiza a una tarjeta de video más nueva, más rápida y más avanzada (a medida que se vuelven disponible).

Esto, por supuesto, asume que su tarjeta de video es compatible con la aceleración de hardware. De hecho, no todos lo hacen, y WPF acomoda esto con un enfoque de tres niveles:

  1. Si su tarjeta de vídeo no proporcionar cualquier nivel de aceleración de hardware, como por ejemplo si se está ejecutando una versión de DirectX inferior a 7.0, WPF vuelve al modo de representación de nivel 0 o aceleración de software.

  2. Si su tarjeta de vídeo es compatible con la aceleración parcial hardware, como si se está ejecutando una versión de DirectX entre 7,0 y 9,0, a continuación, utiliza WPF Nivel 1 modo de representación.

  3. Si su tarjeta de vídeo compatible con plena aceleración de hardware para todos salida de gráficos, que corresponde a una versión de DirectX igual o mayor que 9,0, entonces WPF utiliza el modo de representación de nivel 2.

This MSDN page proporciona más información sobre estos niveles procesamiento de gráficos y exactamente qué características y capacidades de soporte de aceleración de hardware.

Y no sé si ya ha visto this blog post, pero con una mejor comprensión de lo que acabo de explicar, puede que tenga más sentido para usted cuando lo vuelva a leer ahora.

Recuerde, sin embargo, que parte del trato con WPF es que no tiene que preocuparse por los detalles y la idiosincrasia de este proceso. La tecnología es lo suficientemente inteligente como para utilizar optimizaciones de hardware siempre que sea posible, mientras que se recurre a la representación basada en software cuando sea necesario. Sus aplicaciones WPF funcionarán incluso en computadoras más antiguas con tarjetas de video heredadas, aunque más lentas que en un cliente más nuevo. Por lo tanto, esto es probablemente algo de lo que no debe preocuparse más allá de la curiosidad casual.

+1

Tengo un proyecto WPF, donde necesito renderizar 200,000 polígonos usando la función StreamGeometryContext y PolyLineTo en el OnRender del control del usuario. Cuando lo hice, las ventanas enteras se vuelven extremadamente lentas incluso para arrastrar la ventana. Todos los objetos poligonales y el bolígrafo están Congelados. No creo que la aceleración por hardware se esté utilizando aquí. ¿Cualquier sugerencia? Mi sistema es Widows 7 + Visual Studio 13. –

+0

He actualizado el enlace de MSDN para que apunte a la versión .NET 4.0, ya que el enlace de la versión actual (sin versión) ahora está roto: MS parece haber eliminado el artículo de .NET 4.5+. – Bob

Cuestiones relacionadas