Ver la versión completa : Redimiento con SDL y doble buffer
otro hilo que se ha perdido con el hefecto 20000 :D reflote al canto...
Ayer estuve haciendo pruebas del juego en la gp2x y menuda desilusion... llevaba tiempo sin avanzar en el juego y los ultimos cambios los hacia y probaba en windows.
En cuanto hay unos 15 elementos en pantalla el juego se relentiza de forma muy considerable, si hay menos elementos va a una velocidad perfecta. Todo esto usando el doble buffer, con un solo buffer va mucho mas rapido pero aunque no lo probe ayer creo recordar que la pantalla parpadeaba un monton.
En fin... hay alguna herramienta o forma de saber mas o menos cuanto tiempo tarda en ejecutarse cada funcion del programa? para hacerme una idea de que parte del juego es lo mas costoso y ver si puedo rascar tiempo por algun sitio, sino tendré que dejar de usar doble buffer.
Saludos
Lo más costoso sin mirar el código: pintar en la pantalla. Sin el doble buffer la pantalla parpadea, precisamente para evitar eso se inventó. Lo que puedes hacer es no borrar toda la pantalla sino solo las partes que se hayan modificado o se vayan a modificar. Si ya lo haces, baja los FPS y comprueba bien las rutinas gráficas no sea que superpongas rectángulos. En realidad todo esyo complica mucho la programación de la parte gráfica, pero es el camino por el que ir.
Por otro lado... ¿en qué lenguaje programas?
estoy utilizando c++ con las SDL aceleradas por hard.
la pantalla la reescribo entera en cada frame si, mas que nada porque con el scroll del mapa se va a tener que pintar el fondo completo practicamente siempre. aun asi tendre que revisar con mas tranquilidad las librerias que estoy utilizando para los mapas de tiles, por si hacen alguna cosa extraña.
Los fps los quiero mantener en 60 si o si jeje, igual es mucho pedirle a la gp2x usando 16 bits de colores pero no se. a ver si encuentro algo parecido al gprof de Linux para Win y pruebo alguna cosa para ver si gano algo de rendimiento que ahora mismo no tengo el toolchain de linux configurado y me da pereza :D
gracias!!
Si utilizas mapas de tiles, plantéate no hacer scroll constante (centrado en el personaje, supongo) sino solo cuando el personaje llegue a los extremos del mapa, y solo pintar las partes de la pantalla que cambien. Ganarás en velocidad aunque sea más complejo de programar.
estoy utilizando c++ con las SDL aceleradas por hard.Los fps los quiero mantener en 60 si o si jeje, igual es mucho pedirle a la gp2x usando 16 bits de colores pero no se.
creo que la siguiente pregunta, es a cuantos frames te va ahora mismo con los 15 sprites?
- a ver si lo que esta mal es la funcion que cuenta los fps.
- 60 fps es una paranoia, cualquier juego te ira bien a 30 fps.
- recuerda que las pelis pal van a 25fps, y las ntsc a 30fps, creo que el ojo humano tampoco es capaz de ver mucho mas.
Aiken
< - >
Si utilizas mapas de tiles, plantéate no hacer scroll constante (centrado en el personaje, supongo) sino solo cuando el personaje llegue a los extremos del mapa, y solo pintar las partes de la pantalla que cambien. Ganarás en velocidad aunque sea más complejo de programar.
no es que sea mas complejo de programar, es que cambias radicalmente el estilo del juego, aparte de que es mucho mas vistoso y chulo con scroll continuo :D
en cualquier caso, si repinta la pantalla total, lo mismo da que haga scroll continuo que no, pues el fondo siempre se pinta total. ;)
Aiken
< - >
nos molaria mas que nos trajeras un juego chulo que un juego que vaya a 60fps. ;) lo que quiero decir es que no te obsesiones demasiado con los 60fps, y dedicale el tiempo ha hacer que el juego sea mas divertido ;)
Aiken
< - >
y si eres un obseso del rendimiento, intenta que funcione a menos de 133mhz si o si :D (ahorraremos pilas y te lo agradeceremos enormemente) :brindis:
venga espero no te tomes los comentarios a mal, al reves ;) muchos animos tio! cualquier cosa que programes para la gp (aunque no vaya a 60fps) te lo acojeremos con gran ilusion! :D :brindis:
Aiken
no se exactamente a cuantos va, no he mirado la verdad, pero tranquilamente se pondra en la mitad, unos 30 fps, vamos que no le da tiempo a calcular todo antes del refresco de pantalla.
lo de los 60 fps no es por capricho :D , es que en su dia porte lo que había hecho del remake del Black Tiger para la GP32 a la 2X y ahora que he creado un nivel completamente nuevo para el juego quería darle un poco de caña.
El juego original va a 60fps y el de la GP32 lo deje en 60 tambien, es que si le bajo los fps la verdad que pierde bastante.
Tambien es verdad que en la gp32 lo hice todo a 8 bits y en este a 16 asi que puede ser que no de pa tanto la 2X usando SDL. Bueno, ya veremos si puedo rascar algo de algun sitio y sino habra que volver a los 8 bits o algo asi.
Prometo no obsesionarme con los 60 fps si empiezo con algun proyecto nuevo :D ;)
Tambien es verdad que en la gp32 lo hice todo a 8 bits y en este a 16 asi que puede ser que no de pa tanto la 2X usando SDL.
pues si en la gp32 yo he probado cosas a 16bit y efectivamente tambien se relentiza mogollon. Si ya tienes trabajo hecho a 8bit podrias probar en 8bit a ver que tal ;)
en cualquier caso animo tio ;)
Aiken
Primero, aseguraos que las imagenes que cargais las pasais al formato de pixel que se utiliza para la pantalla. Si no, cada vez que hagais blit irá haciendo conversiones al vuelo. Esto jode *mucho* el rendimiento. Creo que la funcion era SDL_DisplayFormat(), tengo algo de polvo en el cerebro.
Segundo, es jodido hacer juegos con un scroll suave sin saber el hardware que hay debajo. En la mayoria de casos, el scroll se hace modificando un registro hardware que indica la dirección de memoria a partir de la cual se empieza a pintar. Igual SDL se queda cortito en este aspecto.
Primero, aseguraos que las imagenes que cargais las pasais al formato de pixel que se utiliza para la pantalla. Si no, cada vez que hagais blit irá haciendo conversiones al vuelo. Esto jode *mucho* el rendimiento. Creo que la funcion era SDL_DisplayFormat(), tengo algo de polvo en el cerebro.
Ni que lo digas, al principio ya me paso eso e iba lento de ganas el jueguecillo en la 2X, menos mal que habia un hilo comentandolo por aqui por el foro y lo pude solucionar. La funcion para cambiar el formato es esa si.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.