Parece ser que lo que estas haciendo es imprimir el mouse sobre el bitmap screen usando (supongo) una construcción de este tipo:
show_mouse(screen);
blit(buffer, screen, 0, 0, 0, 0, W, H);
show_mouse(NULL);
blit(buffer, screen, 0, 0, 0, 0, W, H);
show_mouse(NULL);
esto produce un parpadeo feo, y puede que hasta otros problemas....
ten en cuenta que el puntero del mouse es un bitmap como otro cualquiera, asi que lo mejor es que utilices el doblebuffer, contruyendo el programa de la siguiente manera:
show_mouse(buffer);
blit(buffer, screen, 0, 0, 0, 0, W, H);
show_mouse(NULL);
blit(buffer, screen, 0, 0, 0, 0, W, H);
show_mouse(NULL);
esto elimina cualquier parpadeo..
Os adjunto codigo fuente y ejecutable para windows de lo dicho....
Un cordial saludo a todos y pasaros por: http://sp4br75.digiweb.psi.br/principal.htm
----- Original Message -----From: t0rk4nSent: Thursday, May 09, 2002 11:15 AMSubject: RE: [AL-ES] como hacer un Debug de un programa allegro con MSVC--- En allegro-espanol@y..., Grzegorz Adam Hankiewicz <gradha@t...>
escribió:
> On Sun, May 05, 2002 at 06:37:23PM -0000, t0rk4n wrote:
> > Hola a todo el mundo,
> > resulta que tengo un problema con allegro y no se como
> > solucionarlo. Para solucionarlo necesito hacer un debug del
programa,
> > pero si ejecuto el debug tipoco del MVSC no funciona... ¿Alguien
sabe
> > como hacer un debug con MVSC de un programa allegro? Creo que
para
> > hacer un debug habria que usar el GUI de allegro, pero no se como
> > usarlo,¿Sabeis si hay algun GUI ya hecho y como se usa?.
>
> Lo que necesitas hacer es ejecutar tu programa con un driver en modo
> ventana. Debido a cómo es Windows y DirectX, es prácticamente
imposible
> depurar nada a pantalla completa (a no ser que estés depurando por
red
> o en sistemas de monitor dual, claro). En cambio en modo ventana no
> suele haber problemas. Y si te siguen dando problemas, prueba forzar
> la ejecución de tu programa con el driver GDI, que ese si no se deja
> depurar es que algo muy malo le pasa a tu depurador.
>
> > Ahh, y una ultima pregunta... Estoy intentando hacer un
pequeño
> > motor para poder hacer aventuras graficas con allegro, pero tengo
> > problemas con el mouse, ya que se especifica que el mouse se debe
de
> > ocultar cuando dibujas sobre la memoria de video. Yo he probado a
no
> > ocultarlo, pero el mouse parpadea constantemente mientras dibuja
o ni
> > si quiera se ve. Pienso qe esto es un verdadero problema para
hacer
> > un juego de este tipo..¿Como podria hacer para solucionar este
> > problema?.
>
> Este es un problema común, y casi siempre la forma más expeditiva de
> solucionarlo es pasar del cursor por hardware (ya que la mayoría de
> las veces te interesarán hacer chorradas como cursores animados o
más
> complejos que un bitmap bicolor), y dibujar "a mano" el cursor del
ratón
> en la posición adecuada.
>
> Esto significa ocultar el cursor hardware y dibujar el sprite que
> quieras en la posición adecuada. El único problema es que
dependiendo
> de la tarjeta gráfica o del modo en que actualices la pantalla el
ratón
> puede resultar "poco responsivo" al usuario si tu programa no
consigue
> dibujar muchos frames por segundo. Por supuesto en una aventura
gráfica,
> donde no suele haber mucho movimiento en pantalla, suele ser
suficiente
> con usar dirty rectangles y no se nota la diferencia.
>
> La forma compleja de solucionar esto es intentando usar
scare_mouse_area
> cuando intentes redibujar la pantalla (o parte). Pero esto sólo
merece
> la pena si quieres conservar el cursor por hardware.
>
> --
> Grzegorz Adam Hankiewicz gradha@t...
http://gradha.infierno.org/
-----------------------------------
Creo que entiendo todo lo que me dices, pero lo que no entiendo
demasiado bien es a que te refieres con dibujar el mouse "a mano".
¿te refieres a olvidarse de allegro para dibujarlo o a simplemente
hacer un scare_mouse y usar los parametros del mouse de allegro para
dibujarlo a mano?. Tambien desconozco lo que son los dirty rectangles
aunque me suena el termino, ¿que se supone que son?.
Gracias.
_______________________________________________
Para cancelar su subscripción envíe un email a:
allegro-espanol-unsubscribe@egroups.com
La utilización de Yahoo! Grupos está sujeta a su aceptación de las Condiciones del servicio así como de la Política de privacidad.