Ver la versión completa : programar un contador de FPS
Hola,
Me preguntaba si alguno de los que programeis para la gp32 teneis un ejemplillo del codigo de como visualizar en la pantalla de los jueguecillos que programamos el contador de FPS tipico.
Ah !! Estaria bien tener una seccion de desarrolladores donde se pusieran tutoriales de este tipo: el contador FPS
deteccion de colisiones
gestion de sprites
tecnicas para dar a nuestros monstruos algo de inteligencia artificial, aunque sea poca.
pero todo esto hecho facil ... me refiero a que no nos metamos
en temas profundos de inteligencia artificial, algoritmos geneticos y cosas asi. Vamos algo para programadores aficionadillos ....
Aiken
Pues exactamente no recuerdo como era en C pero un psudoalgorismo en C seria asi:
int t_ini,time,fps;
t_ini=gettime();
while (noexit)
{
time=gettime();
if(time-t_ini>1000) (suele estar en msec)
{fps=0,t_ini=time}
draw_scene();
fps++;
}
Ma o meno.
mortimor
01/10/2003, 23:08
Exactamente como dice Wave. Para mirar el tiempo, como en la GP32 no hay RTC, utiliza la funcion GpTickCountGet(). 1000 tick aprox 1000 ms.
Ya sabia yo que era facil ... :D :D
Lo que no sabia era como calcular el tiempo ... muy buena
idea lo de contar los ticks.
Aiken
Regular la velocidad del juego
Hay zonas donde hay mucho que pintar que va mas lento
que en otras zonas en las que hay poco que pintar que va como
un tiro.
Supongo que la solucion es establecer la velocidad de la cpu a
la minima necesaria para que en las zonas de mucho pintar vaya normal, y limitar los fps en las zonas con poco grafico.
Ese 'limitar los fps' como lo hariais ??
Dos preguntitas chulas en un solo dia !!! No os quejareis que no
os pongo retos ....
Aiken
mortimor
02/10/2003, 01:22
Yo lo hago de una forma muy castiza, pero me funciona.
Lo mismo de antes, calcula el tiempo que pasa desde dibujar un frame y si no llega al minimo o esperas o sigues procesando otras cosas.
Piensa que si quieres tener 30 fps lo que buscas es un tiempo entre frames de 1000/30 ms. Esto son cuestiones triviales.... piensa un poco.
Por cierto, respecto al contador de antes, no menosprecies el consumo de cpu que conlleva calcular esto y dibujarlo en pantalla.
Me deje 2 cosas, una variable llamada fps_act, y que antes de poner fps a 0, fps_act=fps, asi se save el valor y no se borra.
Sip, cuando pense mas tranquilamente el pseudo que me pasaste me di cuenta de que se borraba, ya he puesto una variable, la he llamado lastfps.
Tu crees que la aproximacion 1000 tick --> 1000ms podria ser valida teniendo en cuenta los gastos que suponga calcularlo y dibujarlo ? Yo creo que teniendo en cuenta que todo esto es una aproximacion no esta mal, no?
Voy a mirar lo del 1000/30 haber si le doy forma con lo que me
has dicho.
Tengo que probarlo, pero me preocupa que el frame 30 durara mas tiempo que los otros, pero supongo que tratandose de cifras tan pequeñas no se notara ...
Cuando lo tenga os cuento ...
Aiken
Estoy intentando saber el tiempo q tarda en ejecutar un código. ¿Como lo hago con esta función?, a ver si me explico, con esto pongo el timepo en ms pero:
¿que función debo usar para mirar el tiempo al empezar a ejecutarse ese código y al acabar?
Es q no me aclaro con el api d gamepark
Grasias
mortimor
03/10/2003, 03:21
Pues mas o manos:
{
tmp=GpTickCountGet();
//Ejecutas el codigo
time=GpTickCountGet()-tmp;
//time sera aproximadamente el tiempo en milisegundos
}
te digo lo q le decia a Aiken, piensa un poco por Dios.
Eso es ¡evidente! (por DIOS). No iva por ahi
salu2
Te vas a tener que explicar mejor pues creo que no te entendemos la pregunta .... al menos yo no entiendo lo que quieres preguntar ?
Aiken
mortimor
03/10/2003, 18:08
Me parece que te refieres a mirar una hora especifica (hh:mm:ss) como podemos hacer en el PC.
Eso no es posible en la GP32 ya que no tiene RTC. Puedes obtener mas informacion al respecto en la pagina de Darkfader, creo que incluso dicen como se podria añadir uno (pero eso se escapa de tu intencion no??).
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.