PDA

Ver la versión completa : Blobs - Curioso Efecto de Píxeles 2D en Tiempo Real



fjsantos
20/12/2007, 23:48
Buenas noches a todos:

Despues de tanta pregunta en los foros, y gracias a todos los que me ayudaron a resolver estas dudas, quiero presentaros este curioso efecto Blobs.

Está programado en con SDL y C.
Este es un bonito efecto que realizé hace años en blitz, y que he vuelto a realizar (eso sí, esta vez optimizando mucho más que la última vez), para la gp2x.
Con él he empezado a tomar contacto con esta nueva 'amiga' y he empezado a comprender sus posibilidades. También he podido comparar las diversas velocidades entre diversos lenguajes (principalmente Fenix y SDL).

Con él también adjunto el código por una doble razón:
Por un lado, me gustaría compartir todo lo que he podido aprender en esta primera semana con todo aquel que empiece en este mundillo, y por otro lado me gustaría animaros para optimizarlo todo lo que podáis para sacar algún que otro frame más

En fin, como es muy tarde, no me gustaría extenderme demasiado, así que lo posteo sin más y espero que os guste.

Un saludo, fjsantos.

pd->He notado que en la esquina inferior derecha de la pantalla hay un par de píxeles que hacen cosas raras (van desacompasados con el efecto en general), aunque he repasado 3 veces el código, no consigo encontrar el problema, además en el emulador en el PC, esto no aparece, con lo que me llama más la atención. Igual alguno de vosotros descubre el problema.

kmkzk
21/12/2007, 09:46
Hola!
Hace dos años hice el mismo efecto para la gp32, pero por mucho que intantaba optimizarlo, no conseguia que correiera fluido y de manera decente (programaba en C y usando el SDK de gamepark).
Le echaré un vistazo a ver si me puede ayudar! Gracias apigo! :brindis:

fjsantos
21/12/2007, 10:02
Buenos días kmkzk.

Me alegra saber que hiciste el mismo efecto años atrás, aunque como era para la gp32 (que según tengo entendido es más lenta de procesador), es lógico que te fuera más lento. Estoy seguro que en la gp2x iría fluido.
Aunque paa mi gusto, le faltan unos frames más de velocidad para que fuera perfecto, pero no logro averiguar como hacerle un overclock a la cpu de la gp2x con el SDL. A parte de no tener ni idea de como usar el otro procesador (un procesador algo 'místico' según he estado leyendo).
Ahora que le he cogido el truquillo al tema de los píxeles en pantalla, quiero hacer un par de efectos clásicos más.
Intentaste realizar algún otro efecto de este tipo?

Un saludo, fjsantos.

swapd0
21/12/2007, 11:18
Hola, le he echado un vistado rapido y veo que si usaras aritmetica en punto fijo correria bastante mas.

Otro consejo, para las rutinas trigonometricas en vez de usar grados (0 a 360) usa valores que sean potencia de dos (0 a 512-1), no se gana mucho pero se simplifica el codigo, asi en vez de hacer cosas como.


while (angulo>360)
angulo-=360;

// podrias hacer esto, donde ANGULO_MAXIMO es una potencia de 2 - 1
angulo&=ANGULO_MAXIMO;


swap d0

rlyeh
21/12/2007, 18:14
Lo he portao a las minimal 0.C, y la verdad es que queda muy mono.

¿Puedo incluirlo en los ejemplos 8 bits de mis librerias?

Aqui teneis el fuente y el ejecutable (se sale con START + VOL-)

fjsantos
21/12/2007, 23:16
Buenas noches.

Me alegra ver que gusta el efecto. Tengo que probar lo que me comentas swapd0, estoy seguro de que ganará frames de esta forma. Para mayor velocidad, también podría crear una tabla con todas las posiciones de x e y, (ya que son cíclicas), aunque probablemente el fuente, pesaría bastante más.

Rlyreh, será un placer que lo pongas de ejemplo en tus magníficas librerías. Por cierto, me he bajado tu compilado y he notado dos cosas, corríjeme si me equivoco.
Por un lado, me da la sensación de que va un pelín más rápido (igual me equivoco).
Por otro lado, si te fijas, creo que la última o dos últimas líneas de abajo del efecto en tu compilado estan en negras (sin rellenar), aunque ignoro si lo has echo intencionadamente, (me he dado cuenta de esto al observar que no aparecía el mismo error con los 2 o 3 píxeles de la esquina inferior derecha).

Un saludo, fjsantos.

swapd0
21/12/2007, 23:54
Tengo que probar lo que me comentas swapd0, estoy seguro de que ganará frames de esta forma. Para mayor velocidad, también podría crear una tabla con todas las posiciones de x e y, (ya que son cíclicas), aunque probablemente el fuente, pesaría bastante más.

Me he fijado mas en el codigo y no creo que ganes mucho, lo que mas se lleva es en pintar toda la pantalla, si se cambia para trabajar con 4 pixels (4 bytes) al mismo tiempo si que iria mucho mas rapido.