Mundo FIV

Versión completa: SDL Me consume mucha CPU en XP y en Vista se cuelga!
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Páginas: 1 2 3
Buenas, xD

Estoy usando C++ junto con SDL. He hecho algún programita así sencillo (movimiento de personaje y poco más), pero siempre tengo el mismo problema:

Al ejecutarlo me consume aproximadamente el 50 % de CPU en Win XP y Vista de 32 bits, y en Windows Vista 64 directamente se resetea el PC.

¿Cómo puedo solucionar el problema? ¿Tengo que hacer uso de SDL_Delay() o de sleep() en cada iteración del bucle principal o algo así?

Gracias
xDD se estrena sección ^^

Ya se que suena típico pero, liberas las imagenes cargadas? limitas los frames?
Libero las imágenes al final del programa (no en cada iteración, sino al terminar el bucle principal y por tanto el programa). Los frames no los limito.
(20-01-2009 05:14 PM)MouTio escribió: [ -> ]Libero las imágenes al final del programa (no en cada iteración, sino al terminar el bucle principal y por tanto el programa). Los frames no los limito.
Pues ahí tienes el problema xD

Limita los fps (50 suelen sobrar normalmente) y libera las imágenes cuando no las uses o tu programa será un mastodonte.
¿50 frames?

¿Pero el ojo humano no se supone que sólo ve 24 imágenes por segundo? Entonces debería limitarlo a 24, ¿no?

Y leí que el cine por ejemplo, lo suelen hacer de 30 fotogramas por segundo. ¿Por qué 30 y no 24?

Y lo más importante de todo: ¿Cómo limito los FPS? xDDD
xDDDD hay una función que lo hace me parece, no me acuerdo xDD si no siempre puedes hacerlo manual xD pones al final del buble un Sleep(el numero que sea xD) está en la librería de windows.h

De todas formas me suena que había una función xD
Hay una funcion en SDL que se llama SDL_Delay(n); donde "n" es la cantidad de milisegundos que quieres que el programa esté sin hacer nada. Supongo que será lo mismo que sleep pero sin necesidad de añadir librerías externas.

De todas formas, ¿qué número tengo que poner para limitar el asunto a 30 fps?
1/fps
¿por ejemplo esto?:

#define FPS 30

int main(){
bucle principal{
...
SDL_Delay(1/FPS);
}
return 0;
}
Premio para el caballero xD
Páginas: 1 2 3
URLs de referencia