Problema de ralentizado con SDL_image

Solicite, consulte o publique recursos de referencia para desarrolladores.

Problema de ralentizado con SDL_image

Notapor Faqndo » Mar Jul 17, 2012 7:51 pm

Buenas, tengo un problema con el SDL_image que me esta matando, resulta que estoy haciendo un juego rpg, y, para simular un mar, quiero hacer como en los pokemon de llenar atras con una animacion de un mar que se mueve, pero al pasarla por el SDL_image y dibujarla me baja un monton los frames del juego, es bestial, me deja a unos miseros 16 fps, y ya no se que probar para que no me ralentize, por eso posteo aqui, para que los expertos vean mi caso :D .


Gracias por adelantado a las futuras respuestas.
Faqndo
 
Mensajes: 10
Registrado: Dom May 13, 2012 4:36 pm

Re: Problema de ralentizado con SDL_image

Notapor Barajas » Mar Jul 17, 2012 9:53 pm

Bueno, asumo que mucho de eso es por el algoritmo que estas utilizado para poder hacer ese movimiento, a la mejor tienes muchos bucles, aun que tal vez si enseñases el código podríamos ayudarte mejor :).... o si eso no funciona... has pensado en lugar de remplazar el tile utilizar un sprite. :)
Vi veri universum vivus vici
Avatar de Usuario
Barajas
 
Mensajes: 209
Registrado: Mar Nov 16, 2010 12:06 am

Re: Problema de ralentizado con SDL_image

Notapor Faqndo » Mié Jul 18, 2012 5:01 am

el codigo de momento no se si enseñarlo, porque son 3500 lineas de codigo las que tendria que enseñar :D , ahora mismo lo unico que hago con la imagen es declararla, cargarle el contenido y dibujarla, es un sprite ya no?.

Quiza pueda ser eso de los bucles, pero no se, lo dudo porque lo unico que me hace ralentizaciones en el juego es la carga de imagenes utilizando el SDL_image, si utilizo bmp, no se queja, eso si, si utilizo la imagen de atras en bmp, pasa de ocupar 365kb a xxx MB, porque es una imagen enorme.
Faqndo
 
Mensajes: 10
Registrado: Dom May 13, 2012 4:36 pm

Re: Problema de ralentizado con SDL_image

Notapor Faqndo » Mié Jul 18, 2012 4:53 pm

Bueno, me di cuentya de lo que faltaba, cometi un gran fail por mi parte, yo utilizo una funcion para cargar siempre las imagenes .bmp, pero para las .png no podia utilizar dicha funcion asi que las cargaba y ya esta, pero se me estaba olvidando el display_format :oops: , ahora se me ve fluido como el que mas pero no me respeta la parte invisible que tengo en cada imagen, eso como se podria solucionar, aparcando la idea de que transparente un color especifico como ya hace pero con las imagenes bmp.



Perdonen las molestias :oops:
Faqndo
 
Mensajes: 10
Registrado: Dom May 13, 2012 4:36 pm

Re: Problema de ralentizado con SDL_image

Notapor carlostex » Jue Jul 19, 2012 4:22 am

Con que imagenes no te respeta la transparencia?
Para el fondo esta bien usar una imagen en formato bmp, pero en los sprites ya sean objetos o personajes he visto que funciona mejor usar imagenes en formato png pues este formato admite la trasparencia nativamente, es decir no tienes que aplicar el color key, he usado este formato de archivo y usando el formato de la imagen de la superficie a 32 bits de color y me ha dado resultados mejores que usar menor numero de bits de esta forma he logrado unos 60 fps.
El conocimiento de unos es conocimiento de todos.
Avatar de Usuario
carlostex
 
Mensajes: 249
Registrado: Mar Jul 14, 2009 4:13 am
Ubicación: mexico

Re: Problema de ralentizado con SDL_image

Notapor Faqndo » Jue Jul 19, 2012 6:32 am

bueno, las imagenes en formato .bmp van bien, ahora no me ralentiza mas al cargar imagenes con la libreria SDL_image porque le aplico una funcion que hice para no estar todo el rato haciendo el mismo proceso



Código: Seleccionar todo

SDL_Surface* cargarImagen_png(char *nombreArchivo)
{
    SDL_Surface *image, *png;
    image = IMG_Load(nombreArchivo);
    if(!image) return 0;
    png=SDL_DisplayFormat(image);
    SDL_FreeSurface(image);
    if(!png) return 0;

    return png;
}




Ahora el problema de esta funcion es que el canal alfa, que deberia ignorarlo y dejarlo invisible, me lo muestra de color negro, supongo que se podria meter un filtro para que me transparente el color , pero eso seria ir por el camino facil, lo que deberia hacer ya de serie es ignorarlo, ya que el canal alfa no tiene color y esta invisible en la imagen que cargo
Faqndo
 
Mensajes: 10
Registrado: Dom May 13, 2012 4:36 pm

Re: Problema de ralentizado con SDL_image

Notapor Barajas » Jue Jul 19, 2012 6:54 am

Intenta con esto:

SDL_surface * Carga_ima(const char * direccion){
//SDL_DisplayFormatAlpha permite utilizar el canal Alpha de una imagen....
Surface * image = SDL_DisplayFormatAlpha( IMG_Load(direccion) );
//sí, todo esta en la misma linea....
if(image == NULL) {
printf( ">> No se puede cargar imagen\n");
printf("SDL_GetError()\n");
}
return image;
}


Espero que te sirva :)
Vi veri universum vivus vici
Avatar de Usuario
Barajas
 
Mensajes: 209
Registrado: Mar Nov 16, 2010 12:06 am

Re: Problema de ralentizado con SDL_image

Notapor carlostex » Jue Jul 19, 2012 9:22 pm

En que formato esta la imagen que tiene canal alpha? que yo sepa las imágenes bmp no lo tienen, las png si, por eso uso esas y no le tengo que aplicar eso de habilitar el canal alpha
El conocimiento de unos es conocimiento de todos.
Avatar de Usuario
carlostex
 
Mensajes: 249
Registrado: Mar Jul 14, 2009 4:13 am
Ubicación: mexico

Re: Problema de ralentizado con SDL_image

Notapor Faqndo » Vie Jul 20, 2012 10:49 am

He substituido la funcion de carga de imagenes no bmp por el que me ha dado barajas y ya me va bien, muchas gracias a todos.
Faqndo
 
Mensajes: 10
Registrado: Dom May 13, 2012 4:36 pm


Volver a Artículos, traducciones y documentación

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado