Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Transformaciones en 2D con SDL puro (sin opengl, etc)

Iniciado por kittie4man, 16 de Marzo de 2008, 04:32:35 AM

« anterior - próximo »

kittie4man

Hola a todos!!

Mi pregunta es si conoce alguien algun algoritmo para hacer transformaciones tales como rotacion, tamaño, etc en 2D solo utilizando SDL.
Mejor aun si lo que conocen esta en C++. Encontre SDL_gfx pero me gustaria no depender de una libreria para esos efectos.

En mi proyecto no uso OpenGL ni nada mas que SDL y no encontre como hacer rotacion ni cambio de tamaño a una surface.

Tambien quisiera hacer SDLRect triangulares (varios puntos en diferentes  coordenadas) sobre 1 sola surface. Osea, por ejemplo imitar el efecto de rotura de cristales.

Por otro lado, quisiera hacer un efecto como el de este juego de XBOX cuando cae una pieza. Esa estela que deja la pieza cuando va callendo.

Si alguien me da una mano se lo voy a agradecer mucho.

Salu2 y gracias
Juan Pablo

[EX3]

Cita de: "kittie4man"En mi proyecto no uso OpenGL ni nada mas que SDL y no encontre como hacer rotacion ni cambio de tamaño a una surface.
Lo logico para estas operaciones tan complejas y costosas es aprovechar minimamente la potencia del hadrware grafico a traves DirectX u OpenGL ya que hacerlo a pelo no solo es complejo de narices si no que tambien es muy lento de ejecutar, sobre todo si lo aplicas a varias superficies simultaneamente. Ademas, no ganas nada reinventando la rueda, solo perder tiempo en algo que ya te dan hecho multitud de librerias.

Cita de: "kittie4man"Tambien quisiera hacer SDLRect triangulares (varios puntos en diferentes  coordenadas) sobre 1 sola surface. Osea, por ejemplo imitar el efecto de rotura de cristales.
En 2D lo mas facil y que usan generalmente es tener los fragmentos de cristales como texturas aparte, nunca trocean texturas para simular ese efecto ya es muy complicado de implementar y seria tambien menos optimo que leer una region rectangular. Los fragmentos que tu has visto en otros juegos quizas sean en juegos 3D donde no parten la textura si no que separan los triangulos de un poligono para simular el efecto, cosa que es mas factible que leer regiones irregulares de una textura.

Cita de: "kittie4man"Por otro lado, quisiera hacer un efecto como el de este juego de XBOX cuando cae una pieza. Esa estela que deja la pieza cuando va callendo.
No sabia que las texturas hablaran :lol: Los efectos de estela serian mas o menos sencillos de implementar. Simplemente tendrias que dibujar una replica de la imagen por donde ha pasado, guardando previamente las posiciones donde ha pasado, y segun la distancia o posicion actual aplicarle menos opacidad hasta llegar a la transparencia total. No he podido ver el video en el equipo de la oficina pero siendo un juego de XBox me supongo que aplicaran shaders a dicho efecto, por lo que no intentes simularlo igual en SDL y encima sin aprovechar OpenGL.

Por cierto, volviendo aquello de no reinventar la rueda, podrias mirarte la libreria de TheAzazel, CRM32Pro, que funciona sobre SDL y viene cargada de historias muy variadas para desarrollar juegos asi como efectos variados como los que buscas (rotaciones, escalados, transparencias, filtros para alterar los colores, etc...) y encima multiplataforma. Quizas te pueda interesar mas que programar directamente todo eso tu mismo desde 0 :)

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

kittie4man

Ante todo muchas gracias por tu respuesta.

Cita de: "[EX3"]Lo logico para estas operaciones tan complejas y costosas es aprovechar minimamente la potencia del hadrware grafico a traves DirectX u OpenGL ya que hacerlo a pelo no solo es complejo de narices si no que tambien es muy lento de ejecutar, sobre todo si lo aplicas a varias superficies simultaneamente. Ademas, no ganas nada reinventando la rueda, solo perder tiempo en algo que ya te dan hecho multitud de librerias.

Si, eso lo imagine y lo lei en todos lados, pero mi idea no es hacer juegos que incluyan rotaciones por doquier, o escalados en todas partes. Mi idea es hacer pequeños efectos (tipo latir en un texto, etc).
Veo que tengo que usar OpenGL pero en maquina MUY viejas (por ejemplo la maquina para la cual empeze este "proyecto" que es un K6-2 233Mhz, 128Mb RAM y nada mas jeje) no le va a andar.


Cita de: "[EX3"]En 2D lo mas facil y que usan generalmente es tener los fragmentos de cristales como texturas aparte, nunca trocean texturas para simular ese efecto ya es muy complicado de implementar y seria tambien menos optimo que leer una region rectangular. Los fragmentos que tu has visto en otros juegos quizas sean en juegos 3D donde no parten la textura si no que separan los triangulos de un poligono para simular el efecto, cosa que es mas factible que leer regiones irregulares de una textura.

Si, es una buena alternativa, muy harcodera pero buena alternativa. Mi idea era aplicar ese efecto (que queria que sea sencillo y no deslumbrante) a cualquier surface y no tener que hacerlo a mano. En fin, sin OpenGl todo se limita MUCHO.

Cita de: "[EX3"]Los efectos de estela serian mas o menos sencillos de implementar. Simplemente tendrias que dibujar una replica de la imagen por donde ha pasado, guardando previamente las posiciones donde ha pasado, y segun la distancia o posicion actual aplicarle menos opacidad hasta llegar a la transparencia total. No he podido ver el video en el equipo de la oficina pero siendo un juego de XBox me supongo que aplicaran shaders a dicho efecto, por lo que no intentes simularlo igual en SDL y encima sin aprovechar OpenGL.

Jajaja, no es un efecto raro ni dificil (a simple vista) pero me daba paja probar y ya que estaba haciendo la pregunta de las transformaciones aproveche para hacer esa tambien.

Voy a ver eso de CRM32Pro aunque para futuros proyectos porque este ya lo tengo casi terminado, solo necesitaba estas cosas para dejarlo "mas lindo" y nada mas que por eso.

Nuevamente, muchas gracias por la respuesta.

Salu2
Juan Pablo






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.