Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-10-2008
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
programacion con sdl

Buenas, No se si es el sitio adecuado para poner una pregunta sobre sdl pero la verdad es que estoy intentando programar un juego para niños con la libreria sdl y de momento ya he puesto los graficos y algunas cosas mas, no parece complicado.
La cuestion es que van saliendo unas letras que se mueven y van formando la palabra, lo que pasa es que al moverse van dejando una estela bastante molesta, se supone que esto se hace alternando el fondo de pantalla con el sprite, pero lo que ocurre es que las letras que ya han salido desaparecen.
En resumen, nose si se puede hacer copiando el contenido de la pantalla despues de que vayan saliendo las letras.......

Alguna idea?

y mis disculpas si este tema del sdl no va aqui.

gracias
Responder Con Cita
  #2  
Antiguo 26-10-2008
Avatar de xEsk
[xEsk] xEsk is offline
Miembro Premium
 
Registrado: feb 2006
Posts: 454
Poder: 19
xEsk Va por buen camino
Debes montarte un "motor" de sprites.

A grandes rasgos, la idea es:

1) Pintar el fondo.
2) Pintar uno a uno los sprites (empezar por los que estan mas alejados).
3) Dibujar la imagen "temporal" en la pantalla.

Asi pues, en cada "refresco" de pantalla, se ejecuta el procedimiento encargado de pintar los sprites. Luego hay tecnicas, para evitar parpadeos, como el DoubleBuffering.

El DoubleBuffering, consite en tener 2 imagenes:
1) Pintas en la imagen 1, mientras muestras la imagen 2
2) Pintas en la imagen 2, mientras muestras la imagen 1
3) Goto 1)

Hay por ahí, muchos engines para gestionar los Sprites (un ejemplo).

Saludos.
Responder Con Cita
  #3  
Antiguo 27-10-2008
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
Se agradece la respuesta, mas o menos lo intento entender, pense que era mas facil como copiar la pantalla y refrescarla, pero lo del temporal no lo agarro bien, si bien es cierto, si es que lo entendi bien, es guardar la posicion de las figuras que van saliendo mientras se mueven, para ir colocandolas despues de haber pintado el fondo, asi que simplemente lo tengo que guardar antes de repintar.

Estoy empezando con el sdl pero veo que me falta muchisimo y para delphi no hay tutoriales salvo el de delphi al limite.

gracias de nuevo, y si puedes darme algun ejemplo mas concreto aparte de la pagina que me menciionas, te lo agradeceria.
Responder Con Cita
  #4  
Antiguo 27-10-2008
Avatar de xEsk
[xEsk] xEsk is offline
Miembro Premium
 
Registrado: feb 2006
Posts: 454
Poder: 19
xEsk Va por buen camino
Hola,

Imagino que te refieres a este SDL xD

Los Sprites
Los sprites, son "dibujos" independientes. En tu caso, por poner un ejemplo, cada letra seria un sprite. Este debe conocer su posición y dibujo.

Motor de Sprites
Su tasca principal, es conocer todos los sprites que se deben mostrar por pantalla, y pintarlos. ¿Cómo sabemos que sprites hay que pintar primero? Pues por su orden de profundidad (campo Z).
Así pues, lo primero que tenemos que pintar es el fondo (que no deja de ser otro sprite), porque todo va a estar por encima del fondo. Luego hay que pintar los sprites, empezando por los que estan "mas lejos" y terminando, por los que estan delante de todo.

Te pongo un ejemplo sencillo abstracto:

Código:
Clase Sprite {
  x,y,z;
  dibujo;  // lo que seria el SDL_Surface por ejemplo
}

Clase MotorSprites {
  lista de Sprites;
  pintar_sprites(); // metodo que pinta todos los sprites
}
El DoubleBuffering
El DoubleBuffering, consite en tener 2 imagenes, que se muestran de forma intercalada. ¿Que ganamos haciendo esto? Pues evitar el parpadeo. El parpadeo ocurre por la lentidud de volcado en pantalla. El porqué el DoubleBuffering no provoca parpadeo (o una menor sensación de parpadeo, porqué existe también el TripleBuffering xD), es porqué mientras estamos mostrando una imagen, por "detras" estamos generando lo que sera la siguiente imagen.

------------

Es complicado explicarlo, sin entrar en temas tecnicos. Mi intención es explicarte la teoria, para que puedas montartelo como mas te guste.

------------

Mi recomendación, es primero montarte el sistema de Sprites. Cuando ya te funcione, puedes mejorarlo, implementando la tecnica del DoubleBuffering.
Responder Con Cita
  #5  
Antiguo 27-10-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 26
Delphius Va camino a la fama
Hola anubis,
No estoy puesto en el tema, pero hace un tiempo he estado siguiendo la lectura de Delphi al límite. Su autor habló al respecto en 10 entregas. Si todavía no lo leíste, tal vez te sea útil. Aquí te paso el enlace.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #6  
Antiguo 29-10-2008
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
Gracias a los dos, . Delphi al limite si lo vi, pero me faltaba saber que tengo que capturar cada vez que sale algo en la pantalla, en mi caso letras, tengo que ir guardando cada una de ellas mientras redibujo el fondo, y redibujo cada una de las letras que han ido saliendo, lioso pero valido .
Pense que se podia capturar la pantalla completa y luego recolocarla, pero veo que si trabajas con altas resoluciones es casi imposible por la memoria no es asi?.

gracias de nuevo
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Programacion de webcams trohan Varios 3 21-12-2007 18:13:51
Programación de un celular hugoChinchilla Conexión con bases de datos 7 14-09-2007 06:09:18
Programación en PDA tal0 .NET 1 01-08-2007 17:45:58
Programacion en .NET Fossy .NET 7 19-03-2007 19:13:47
Programacion con Socket jose_2057111 Varios 2 30-12-2004 13:11:35


La franja horaria es GMT +2. Ahora son las 01:43:00.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi