SDL y Recursos

Tratamos sobre el manejo de APIs frecuentemente utilizadas en el desarrollo de videojuegos, como SDL, pygame o SFML.

SDL y Recursos

Notapor killgt » Sab Dic 27, 2008 8:18 pm

Primero saludar a todos los miembros de este foro que llevo tiempo leyendo pero hasta ahora no he tenido el placer de escribir.

Me estreno aqui intentando resolver un pequeño problema que tengo con un proyecto:

Estamos realizando un pequeño juego de plataformas entre un compañero de clase y yo, el problema es que el juego consume el 50% del procesador ( por que es doble nucleo, si no, el 100%)...

La manera en la que limitamos a 60 fps es:

do{
frametime=CurrentTime();
}while(frametime-tiempo2<17);

El caso es que haciendo esto, realmente lo que hace es esperar hasta que el tiempo desde la ultima vuelta sea 17, asi siempre se mantiene a 60 ciclos por segundo... el caso es que esa parte en la que se queda un bucle dando vueltas hasta que se cumple con ese tiempo... no es eficiente...

¿Alguna idea? Gracias :3
killgt
 
Mensajes: 3
Registrado: Sab Dic 27, 2008 8:07 pm

Re: SDL y Recursos

Notapor killgt » Sab Dic 27, 2008 9:42 pm

killgt escribió:Primero saludar a todos los miembros de este foro que llevo tiempo leyendo pero hasta ahora no he tenido el placer de escribir.

Me estreno aqui intentando resolver un pequeño problema que tengo con un proyecto:

Estamos realizando un pequeño juego de plataformas entre un compañero de clase y yo, el problema es que el juego consume el 50% del procesador ( por que es doble nucleo, si no, el 100%)...

La manera en la que limitamos a 60 fps es:

do{
frametime=CurrentTime();
}while(frametime-tiempo2<17);

El caso es que haciendo esto, realmente lo que hace es esperar hasta que el tiempo desde la ultima vuelta sea 17, asi siempre se mantiene a 60 ciclos por segundo... el caso es que esa parte en la que se queda un bucle dando vueltas hasta que se cumple con ese tiempo... no es eficiente...

¿Alguna idea? Gracias :3


Bueno, lo he conseguido por mi propia cuenta, de todos modos resumo como lograrlo por si a alguien le surge la misma duda:

Se debe de obtener el tiempo del inicio de ese ciclo, digamos que:


Código: Seleccionar todo
tinicio=CurrentTime();


Y al final de la vuelta simplemente, realizamos un:


Código: Seleccionar todo
if (CurrentTime()-tinicio<17)
SDL_Delay(CurrentTime()-tinicio);


Y asi limitamos a 60 fps (1000/60=17) y en lugar de consumir el 100% de los recursos que nos permita el SO, solo consumimos lo necesario. :3

Resumiendo, un SDL_Delay, es mil veces mejor que un bucle :D :D
Salu2
killgt
 
Mensajes: 3
Registrado: Sab Dic 27, 2008 8:07 pm


Volver a Sobre las bibliotecas multimedia

¿Quién está conectado?

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