PDA

Ver la versión completa : ¿Cómo "reflejar" superficies en SDL?



Puck2099
01/12/2005, 03:26
Hola,

Portando mi Lady Killer a la SDL me acaba de surgir un problemilla, en el SDK oficial había funciones para hacer blitting de imágenes "reflejadas", es decir, como si estuvieran vistas en un espejo (ideal para por ejemplo usar un mismo sprite para moverse a derechas y luego "reflejarlo" para que mire hacia la izquierda).

Creo que se me entiende lo que quiero decir, eran las GpTransUDBlt y GpTransLRBlt. Pues bien, en las SDL no veo nada parecido, ¿sabéis de algo o habría que currárselo "a mano"? :(

Muchas gracias

Damizean
01/12/2005, 04:12
Tendrias que hacer una copia de la surface ya reflejada, tampoco seria tan dificil hacerlo :/

bufalo_1973
01/12/2005, 04:15
Inicialmente, por lo que estoy viendo, en SDL no se puede directamente. -todos los consejos que he visto son hacerlo "a mano", crear las 2 tandas de imágenes o usar OpenGL.

Puck2099
01/12/2005, 04:17
Tendrias que hacer una copia de la surface ya reflejada, tampoco seria tan dificil hacerlo :/

Difícil no, pero no creo que sea muy eficiente, más aun cuando estoy en 16 bpp :(

Puck2099
01/12/2005, 04:18
Inicialmente, por lo que estoy viendo, en SDL no se puede directamente. -todos los consejos que he visto son hacerlo "a mano", crear las 2 tandas de imágenes o usar OpenGL.

Lo de crear las tandas de imágenes reflejadas está descartado, pues sería hacer 3 copias de cada una y aplicado a todos los sprites sería una burrada de memoria ocupada...

A ver si me pongo a implementar algo...

Uncanny
01/12/2005, 05:03
No lo he probado, pero puede que te sirva esto (http://www.gamedev.net/community/forums/topic.asp?topic_id=308570&whichpage=1&#1968185).

Puck2099
01/12/2005, 05:10
No lo he probado, pero puede que te sirva esto (http://www.gamedev.net/community/forums/topic.asp?topic_id=308570&whichpage=1&#1968185).

Joe, es muy parecido a la función que me estaba currando :)

Muchas gracias tío :brindis:

Por cierto, me llegó la semana pasada tu comic, se me olvidó agradecértelo, a ver si saco un ratillo y busco los de Angel que te prometí :)

Uncanny
01/12/2005, 05:22
Joe, es muy parecido a la función que me estaba currando :)

Muchas gracias tío :brindis:

Por cierto, me llegó la semana pasada tu comic, se me olvidó agradecértelo, a ver si saco un ratillo y busco los de Angel que te prometí :)De nada, sobre todo gracias al del enlace que se ha currado esa pequeña librería para invertir superficies en SDL :)

P.D: Diox, Correos funciona y todo, extraordinario, y en pocos días (si te llego el viernes o así han cumplido sus plazos teóricos en correo ordinario para envíos nacionales xD), espero que llegara en perfecto estado, me intenté asegurar que no lo doblaran como verías. Lo de Angel, cuando estés aburrido y no tengas nada mejor que hacer, que yo prisa no tengo para nada :p

Puck2099
01/12/2005, 05:27
De nada, sobre todo gracias al del enlace que se ha currado esa pequeña librería para invertir superficies en SDL :)

Pues ya está probada y funcionando perfectamente :)


P.D: Diox, Correos funciona y todo, extraordinario, y en pocos días (si te llego el viernes o así han cumplido sus plazos teóricos en correo ordinario para envíos nacionales xD), espero que llegara en perfecto estado, me intenté asegurar que no lo doblaran como verías. Lo de Angel, cuando estés aburrido y no tengas nada mejor que hacer, que yo prisa no tengo para nada :p

Sí, me debió llegar el jueves después de las 13:00, pues al volver a la oficina el viernes, me estaba esperando en la mesa (y en pefecto estado) :)

Gracias de nuevo

Eskema
01/12/2005, 06:01
¿Tanto rendimiento se pierde si usas una imagen q contenga el personaje caminando derecha e izquierda y vas bliteando segun se mueva?
Yo uso una imagen q contiene las 4 direcciones del personaje y me va fenomenal.

Puck2099
01/12/2005, 06:10
¿Tanto rendimiento se pierde si usas una imagen q contenga el personaje caminando derecha e izquierda y vas bliteando segun se mueva?
Yo uso una imagen q contiene las 4 direcciones del personaje y me va fenomenal.

Ya, si rendimiento no se pierde, pero gasta mucha memoria.

No sé tu personaje cuantos sprites tiene, pero yo tengo en total más de 1000 sprites, algunos que se mueven en 8 direcciones, y si tengo que añadir los sprites de movimiento de cada una sin usar "mirroring" se dispararía la memoria consumida.

Saludos

Eskema
01/12/2005, 06:22
Yo apenas tengo 4 frames por direccion, usea 16 y los mismos para los 3 enemigos. Total 50 frames, luego entre tiles y demas cosas no llego a los 300 sprites en total, entre animaciones y sprites fijos.
De momento parece q voy salvado de memoria :)

Eskema
01/12/2005, 06:30
Me asalta una duda puck, dices q tienes 1000 sprites. Realmente ¿q es lo gasta memoria? quiero decir, yo tengo una imagen q contiene las 4 direcciones del personaje con sus 4 frames. ¿Tan solo me esta ocupando memoria esa imagen?, ¿o el blit de cada frame tb consume memoria?

Puck2099
01/12/2005, 06:39
Me asalta una duda puck, dices q tienes 1000 sprites. Realmente ¿q es lo gasta memoria? quiero decir, yo tengo una imagen q contiene las 4 direcciones del personaje con sus 4 frames. ¿Tan solo me esta ocupando memoria esa imagen?, ¿o el blit de cada frame tb consume memoria?

No, en tu caso solo ocupa memoria esa imagen. Con un blit lo que haces es copiar un trozo de la memoria (donde tienes almacenada la imagen) a otro trozo de memoria (donde se almacena lo que se verá por pantalla), pero como en ambos casos ya tienes esos fragmentos de memoria reservados, no te consume memoria, solo CPU.

Saludos

Eskema
01/12/2005, 06:46
Entonces al hacer la funcion esa de espejo q preguntas, te ahorras unos frames de animacion en la imagen y por tanto ocupa menos memoria ¿correcto?
Como nunca he hecho un juego tan complejo como el tuyo (estoy en ello) no se hasta q punto ese ahorro de memoria puede ser importante.

Puck2099
01/12/2005, 06:49
Entonces al hacer la funcion esa de espejo q preguntas, te ahorras unos frames de animacion en la imagen y por tanto ocupa menos memoria ¿correcto?
Como nunca he hecho un juego tan complejo como el tuyo (estoy en ello) no se hasta q punto ese ahorro de memoria puede ser importante.

Sí, exacto, te ahorras el ocupar memoria al conseguir imágenes más pequeñas gracias a no incluir esos sprites "extras".

Saludos

NoobLuck
06/12/2005, 05:07
No pierdes velocidad al hacer el espejo?

Puck2099
06/12/2005, 05:20
No pierdes velocidad al hacer el espejo?

Sí, pierdes velocidad, ¿cuanta?, eso ya no lo sé...