• Lunes 9 de Diciembre de 2024, 12:22

Autor Tema:  Problema: Sale una mancha.  (Leído 2137 veces)

CarloX

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Problema: Sale una mancha.
« en: Lunes 15 de Septiembre de 2008, 03:44 »
0
Esto es algo que me ha pasado muchas veces y no le daba importancia :no: , hasta ahora :o . Hago un programa en allegro muy simple, de mover un objeto con las teclas, el codigo es algo asi: :huh:

Código: Text
  1. if (Direccion == ARRIBA){
  2.              for( int i=0; i<=2; i++){
  3.                 y -= 5;
  4.                 if (i == 0){
  5.                     blit(buff,screen, 0, 0, x,y+5,buff->w,buff->h);
  6.                     blit(screen,buff,x,y,0,0,buff->w,buff->h);
  7.                     draw_sprite(screen, up1, x, y);
  8.                     }  
  9.                 if (i == 1){
  10.                     blit(buff,screen, 0, 0, x,y+5,buff->w,buff->h);
  11.                     blit(screen,buff,x,y,0,0,buff->w,buff->h);
  12.                     draw_sprite(screen, up2, x, y);
  13.                     }
  14.                 if (i == 2){
  15.                     blit(buff,screen, 0, 0, x,y+5,buff->w,buff->h);
  16.                     blit(screen,buff,x,y,0,0,buff->w,buff->h);
  17.                     draw_sprite(screen, up0, x, y);
  18.                     }
  19.                     rest(50);    
  20.                 }
  21.         }
  22.  
Obviamente eso no es el programa entero sino un parte de la funcion y todas las variables han sido definidas bien, incluso el programa me resulta bien, pero me parte con una mancha al medio. Antes me haia pasado algo igual, pero la mancha se formaba en cualquier parte y estaba usando datafiles(en este uso .bmp).

Ojala me pudieran dar una solucion se las agradeceria.   :brickwall: -> :ouch:
 :hola:

BlackWind

  • Miembro activo
  • **
  • Mensajes: 89
    • Ver Perfil
Re: Problema: Sale una mancha.
« Respuesta #1 en: Miércoles 17 de Septiembre de 2008, 20:43 »
0
no tengo aqui a la mano los proyectos que hice con allegro, pero si no me equivoco, estas rendereando mal.

tu haces esto:
blit(buff,screen, 0, 0, x,y+5,buff->w,buff->h);
blit(screen,buff,x,y,0,0,buff->w,buff->h);
draw_sprite(screen, up1, x, y);


prueba haciendolo asi:
//dibuja tu imagen al buffer
draw_sprite(buffer, up1, x, y);
//dibuja el buffer en la pantalla (screen)
blit(buffer, screen, 0,0,0,0,640,480);   // reemplaza esas coordenadas por las tuyas
// libera el contenido del buffer
clear_bitmap(buffer);

Si eso no te funciona, sube una imagen de como te sale a tu manera, y como te sale con la forma que propuse. Para tener una mejor idea de cual es el problema entonces.

saludos,

CarloX

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: Problema: Sale una mancha.
« Respuesta #2 en: Domingo 28 de Septiembre de 2008, 21:51 »
0
al final esa parte la deje asi:

Código: Text
  1. blit(map, buffer, 0, 0, 0, 0, map->w, map->h);
  2. if (i == 0 || i == 2)draw_sprite(buffer, left1, x, y);
  3. if (i == 1 || i == 3)draw_sprite(buffer, left2, x, y);
  4. if (i == 4) draw_sprite(buffer, left0, x, y);
  5. blit(buffer, screen, 0,0,0,0,640,480);
  6. clear_bitmap(buffer);
  7.  

*le agregue blit(map, buffer, 0, 0, 0, 0, map->w, map->h); para que me mantenga dibujado el mapa