Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





momento de ejecución de RenderGraphics

Iniciado por glglut, 22 de Octubre de 2007, 05:04:06 PM

« anterior - próximo »

glglut

hola!

tengo una duda sobre el orden de ejecución. en la demo SpriteCollision (comento esta pq es la que me he mirado) hay una función que se llama RenderGraphics que se ejecuta en cada frame y es la que pinta los sprites en pantalla, lo que quería saber es cuando se ejecuta, justo al entrar al bucle o después de mirar los eventos de entrada por teclado? o en algún momento aleatorio? puedo pasar de esta función y hacer una propia que yo la llamo cuando quiera o es recomendable usar esta función??

MUCHAS GRACIAS POR ADELANTADO :D

Harko

Hay una funcion llamada SetRate que precisamente ajusta la velocidad de refresco. Creo que utiliza esa RenderGraphics como base, pero no estoy seguro.

Si te fijas en el main hay una funcion como esta " CRM32Pro.SetRenderCallback(RenderGraphics); ", esta es la encargada de poner en marcha el bucle de RenderGraphics. Por lo que lo puedes colocar cuando quieras.

Y en cuanto a lo del teclado, se puede mirar fuera o dentro del RenderGraphics. Yo suelo poner en el main teclas de una sola pulsacion (Escape para salir, F2 para foto, etc), y en el render las que mas se usan (teclas de movimiento, etc). Mas que nada porque sino no ivan bien, se paraba en cuanto pulsaba otra tecla :P.

Harko.
-=Harko´s Blog=-
Fui el primer civil en probar el "Lord of Creatures" y ademas usaban mis cascos. :D

-=Portfolio=-

Alguno de mis juegos:
-=Feed The Frog=-

Neroncity

glglut

muchas gracias por responder, entonces si por ejemplo hago una función que se llama miFuncion() y no la registro en la función que me has dicho: CRM32Pro.SetRenderCallback(RenderGraphics); y en ella solo hago que se pinten todos los sprites y esa función la invoco en el bucle principal del juego justo antes de que se miren los eventos de teclas en principio debería funcionar no? pq es que quiero controlar cuando dibujo en pantalla

muchas gracias otra vez :D

TheAzazel

Si haces eso que has dicho...funcionara igualmente PERO si quieres que los sprites tengas el "auto suavizado" a la hora de moverse, necesitas usar tu funcion de dibujado en .SetRenderCallback().

Respondiendo a tu pregunta...al llamar a CRM32Pro.Update():

- si le pasas un puntero a un SDL_Event, te devolvera en primer lugar todos los eventos disponibles en la cola(de ahi el llamarlo con un while) y cuando haya terminado con ello, comprobara si toca realizar un "render frame", y si asi fuera, actualiza automaticamente el cursor, etc.. y despues llamaria a la funcion dada en .SetRenderCallback(). Despues se quedaria en un bucle esperando a un frame logico u otro "render frame". Con los frames logicos lo que hace es que retorna el control para que prosiga despues del while(CRM32Pro.Update());.

- sin puntero a SDL_Event, omite el paso de devolverte todos los eventos en cola y procede como he indicado mas arriba.

De todo este rollo tengo pendiente hacer una explicacion mas profunda y usando un grafico pero ya para le v5.0...

Si tienes alguna otra pregunta, adelante! que si no soy yo, puede ser Harko que se esta pegando con la lib.

Saludos

glglut

okok voy pillando como funciona, entonces mejor usar el rendersetcallback :P

MUCHAS GRACIAS






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.