2009-10-20 19 views
5

Después de leer el wikipedia article en la arquitectura de WPF, estoy un poco confundido con los beneficios que me ofrecerá WPF. (wikipedia no es una buena referencia de investigación, pero la encontré útil). Tengo algunas preguntasArquitectura de WPF y aceleración de gráficos Direct3D

1) WPF usa superficies d3d para renderizar. Sin embargo, el gráfico de escena se procesa en la superficie d3d mediante la capa integrada de medios, que se ejecuta en la CPU. Es esto cierto ?

2) Me acabo de enterar haciendo una pregunta aquí que los mapas de bits no usan recursos nativos. ¿Esto significa que si uso muchas imágenes, la MIL copiará cada una al renderizar, en lugar de almacenar los mapas de bits en la tarjeta de video como una textura?

3) El artículo menciona que WPF usa el algoritmo de los pintores que está de vuelta al frente. Eso es dolorosamente lento. ¿Hay alguna razón por la cual WPF omite el uso de Z-buffering y el renderizado de adelante hacia atrás? Supongo que es la forma más simple de manejar la transparencia, pero parece débil.

La razón por la que pregunto es que estoy pensando que no sería inteligente para mí poner cientos de botones en una pantalla, aunque mis colegas dicen que su directx se aceleró. No creo que todo el directx aceleró un poco sobre WPF. Solía ​​trabajar en videojuegos y mi memoria de escribir d3d y abrir código me dice que tenga cuidado.

Respuesta

3

Para las preguntas n.º 1 y 3, puede consultar this section del SDK que trata sobre the Visual class y cómo se intercambian las instrucciones de representación entre el marco de nivel superior y la capa de integración de medios (MIL). También explica por qué se usa el algoritmo de pintores.

Para el n. ° 2, definitivamente ese no es el caso. Los datos del mapa de bits se moverán al hardware y se almacenarán allí.

+0

Gracias. El enlace de arquitectura fue muy útil para responder algunas de mis preguntas :) –

2

Probé eso, escribí dos programas que muestran 1,000 botones en la pantalla, uno en WinForms y otro en WPF, ambos funcionaron bien.

Luego presioné eso hasta 10,000 botones, en ese punto la aplicación WPF tardó unos segundos en iniciarse pero funcionó bien, la aplicación WinForms no se inició.

Win32 en sí (y WinForms) no está diseñado para aplicaciones con cientos de controles (créame que escribí una aplicación), en algún momento simplemente deja de funcionar, WPF por otro lado, sigue funcionando incluso si se ralentiza un poco en algún momento.

Por lo tanto, si necesita poner muchos controles en la pantalla, WPF es su mejor opción (a menos que desee implementar su propio marco de UI, y cree que puede hacerlo mejor que todo el equipo de MS perf).

Además, WPF tiene muchas ventajas además de la aceleración de gráficos: gráficos más ricos, modelo de dibujo con el que es más fácil trabajar, animaciones, 3d y mi favorito personal: increíble vinculación de datos.

Esto le permitirá desarrollar UI más ricas más rápido, y creo que eso hará una diferencia mucho mayor que el algoritmo de pintura utilizado.

Por cierto, si usted necesita para poner cientos de botones en la pantalla esto es probable que sea una mala experiencia de usuario y es posible que desee volver a examinar su diseño de interfaz de usuario,

+0

Lamentablemente, mi aplicación muestra una vista de una centralita que tiene muchos botones para que el operador se sienta cómodo. La interfaz de usuario está tan desordenada, pero les gusta de esa manera.La nueva versión en la que estoy trabajando tendrá la capacidad de alejar los botones que no son útiles para reducir el desorden. Dudo que implemente mi propio framework, WPF lo hará bien :) –

Cuestiones relacionadas