Estoy trabajando en una aplicación similar a un juego que tiene hasta mil formas (elipsis y líneas) que cambian constantemente a 60 fps. Después de leer excellent article on rendering many moving shapes, implementé esto usando un descendiente personalizado de Canvas que reemplaza OnRender
para hacer el dibujo a través de DrawingContext
. El rendimiento es bastante razonable, aunque el uso de CPU se mantiene alto.Rendimiento de DrawingVisual frente a Canvas.OnRender para muchas formas en constante cambio
Sin embargo, el artículo sugiere que el enfoque más eficaz para constante movimiento formas es usar un montón de DrawingVisual
casos en lugar de OnRender
. Lamentablemente, aunque no explica por qué que debería ser más rápido para este escenario.
Cambiar la implementación de esta manera no es un esfuerzo pequeño, así que me gustaría entender las razones y si son aplicables a mí antes de decidir hacer el cambio. ¿Por qué podría el enfoque DrawingVisual
dar como resultado un uso de CPU menor que el enfoque OnRender
en este escenario?
Romkyns, podría crear una versión simplificada con DrawingVisual y Canvas.OnRender() para que coincida con el rendimiento, antes de profundizar en grandes cambios. En cuanto a la respuesta, estoy totalmente de acuerdo con Charlie. – Anvaka