Actualmente estoy trabajando en un juego y deseo tener un menú principal con la imagen de fondo.¿La imagen de Graphics.DrawImage es demasiado lenta para imágenes más grandes?
Sin embargo, el método Graphics.DrawImage()
me parece muy lento. He hecho algunas mediciones. Supongamos que MenuBackground es mi imagen de recursos con una resolución de 800 x 1200 píxeles. Lo dibujaré en otro mapa de bits de 800 x 1200 (primero renderizo todo en un mapa de bits de buffer, luego lo escalo y finalmente lo dibujo en la pantalla, así es como trato la posibilidad de resoluciones de múltiples jugadores. Pero no debería afectar de ninguna manera, mira el siguiente párrafo).
Así que hemos medido el siguiente código:
Stopwatch SW = new Stopwatch();
SW.Start();
// First let's render background image into original-sized bitmap:
OriginalRenderGraphics.DrawImage(Properties.Resources.MenuBackground,
new Rectangle(0, 0, Globals.OriginalScreenWidth, Globals.OriginalScreenHeight));
SW.Stop();
System.Windows.Forms.MessageBox.Show(SW.ElapsedMilliseconds + " milliseconds");
El resultado es tranquila sorprendente para mí - la Stopwatch
medidas algo entre 40 - 50 milliseconds
. Y como la imagen de fondo no es lo único que se dibujará, el menú completo tarda más de 100 ms en mostrarse, lo que implica un retraso observable.
He intentado dibujarlo en el objeto Graphics dado por Paint event, pero el resultado fue 30 - 40 milliseconds
- no ha cambiado mucho.
Entonces, ¿significa que Graphics.DrawImage()
no se puede usar para dibujar imágenes más grandes? Si es así, ¿qué debo hacer para mejorar el rendimiento de mi juego?
Si con "inutilizable" quiere decir "lento como un caracol en melaza", entonces sí. Como han dicho otros, dale una oportunidad a XNA. Manténgase en el renderizado de sprites 2D hasta que esté acostumbrado al framework XNA, luego avance hacia 3D si así lo desea. – CodeHxr
Estoy votando eso solo por la analogía. :) – Ani