Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Cargar Una Imagen En Una Surface Ya Creada

Iniciado por KACHORRO, 17 de Septiembre de 2005, 08:53:10 PM

« anterior - próximo »

KACHORRO

 Hola.

Os cuento a ver si alguien me da una idea.

Estoy haciendo un mapa basado en una cuadricula, y muestro en pantalla cada vez sólo cuatro cuadros. (para ahorrar memoria).
Mi idea era ir sustituyendo cada cuadro por los nuevos cargandolos de disco.

En fin... que me lio, la idea básica es:

-cargar una imagen del disco durante el juego
-meterla en la memoria de una surface ya creada

¿o es mejor destruir la antigua y crear una nueva?

AgeR

Cita de: "KACHORRO"Estoy haciendo un mapa basado en una cuadricula, y muestro en pantalla cada vez sólo cuatro cuadros. (para ahorrar memoria).
Mi idea era ir sustituyendo cada cuadro por los nuevos cargandolos de disco.
O_O Dios Santo eso no lo hagas nunca. Nunca vayas cargando y descargando nada de disco si lo has de ir usando contínuamente, porque consume muchísimo tiempo y la aplicación te irá a pedales.

De qué tamaño son los cuadros? Yo creo que hoy en día, hablando de programar para algo no móvil, no deberías tener ningún problema para tener esos cuadros en memoria.

KACHORRO

 mmmm....

veamos... el mapa completo es 8000x10.800 pixels x 24 bits color = 247 megas

No quiero meter eso en memoria.

Ademas, lo que digo tampoco es mucha barbaridad... Ultima 7 lo hacía sobre un 386 con 4 megas.

Pero vamos, me gustaria probarlo porque lo mismo el resultado me sirve.

Así pues, reitero mi duda... ¿cargo y meto en una surface ya hecha? o ¿destruyo, cargo  y creo una nueva?


AgeR

 Bueno, eso es otra historia, peazo mapa  :lol:

Lo más lógico me parece cargar y meter en una surface ya hecha ya que de esta forma no se tiene que volver a reservar la memoria de nuevo (suponiendo que las dos imágenes tengan el mismo tamaño).

KACHORRO

 He realizado una prueba y el acceso a disco no parece ser un problema muy grave (la caché del windows debe de servir para algo no?  :D

Pero si he notado un leve parón que hace que el scroll vaya a tirones, y creo que es por el proceso de copia de los datos leidos del disco a la surface.

Mi pregunta es si hay alguna forma de leer del disco y pasar a la surface directamente sin tener que hacer un BitBlt entre medias.


fiero

 Seguramente donde se queda parado es en la carga del disco, no en el BitBlt. Yo creo que deberías cargar las texturas desde otro hilo, y al pasar de cuadrícula ya la tendrías cargada. Esto trae otros problemas, como que debes ir cargando más cuadrículas de las necesarias, porque no sabes hacia qué lado va a salir el jugador.

un saludo
www.videopanoramas.com Videopanoramas 3D player

KACHORRO

 cargando desde otro hilo eliminaría los tirones ?
perdonad mi ignorancia, pero yo me quedé en el asm y el msdos :-)

fiero

 
Cita de: "KACHORRO"cargando desde otro hilo eliminaría los tirones ?
perdonad mi ignorancia, pero yo me quedé en el asm y el msdos :-)
Se eliminarian los tirones ya que la imagen ya estaría cargada en ram para cuando la necesitas, en el caso de que al otro hilo le dé tiempo de cargarla. Además, el hilo de carga debería tener una prioridad menor que el hilo principal, para que la reducción de CPU al tener dos hilos funcionando no afecte a la acción principal.

¿En qué formato cargas las imágenes?

Esto es importante, si es un formato no comprimido (BMP, TIF...) tiraría más de disco duro que los formatos comprimidos (JPG, PNG...). En general, se tarda menos tiempo en descomprimir una imagen, que en leerla descomprimida del disco duro. Tambien podrias tener todos los tiles comprimidos en JPG en ram, y descomprimirlos según los necesites, en vez de usar el disco duro.

un saludo

PD: Eres el mismo KACHORRO del foro de la abadia?
www.videopanoramas.com Videopanoramas 3D player

KACHORRO

 El mismo de La Abadia, el mismo de Fray Luis y el mismo del IRC desde el 95 :-)

Perro malo nunca muere. (aunque sea viejo) :lol:  

AK47

 Saludos noble KACHORRO!
Tiempo hace que no coincidiamos en un entorno Stratero, lo cual me llena de alegria!
Sigue usted todavia con asuntos isometricos? Le estariamos muy agradecidos si nos mostrase algo relacionado con ese hipotetico proyecto, o simplemente unas palabras de su correctisimo Castellano  :lol:  

Zaelsius

 Aparte de lo que comenta Fiero(cargar en un hilo aparte), tambien sería una buena idea mantener una caché de los tiles que rodean la superficie visible actualmente, en una distancia menor que "X".

Luego, si detectamos que la distancia entre lo visible y alguna imágen sin cachear es menor que cierto rango "Y", se precachean de nuevo los tiles. X deberia ser mayor que Y, claro.

La caché podría ser de un tamaño predefinido, o ajustarse segun la memoria libre de la máquina. En el último caso se le podría dar la opción al usuario de elegir qué porcentaje de RAM quiere usar.. algo así como

- Super suave ( 75% ram )
- Suave ( 50% ram )
- Normal ( 25% ram )

mai chu zents  :ph34r:  

KACHORRO


ajmendoza

 He visto el video y está estupendo, ánimo y pa lante.  

TheAzazel

 Tiene muy buena pinta! y ademas, me trae muchos recuerdos de todos aquellos juegazos que utilizaban esa vista(jugasteis al Heimdall 2? o que decir del mitico Ultima 7...(genial) )

por cierto, que es eso de Medievo? alguna pagina? se termino?  

KACHORRO

 Medievo fué un proyecto de hace ya algun tiempo, en el que llegamos a trabajar una veintena de personas durante dos años. Lamentablemente por una serie de catastróficas desdichas... se fué al garete.
No obstante estoy intentando, al menos, reciclar mi trabajo en Medievo  para darle vida a La Abadia del Crimen 2, y por supuesto, intentar no tropezar dos veces con las mismas piedras.






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.