[C] Problème graphique en C

Problème graphique en C [C] - Algo - Programmation

Marsh Posté le 02-04-2003 à 21:06:08    

salut  
je programme en C sous turbo C (ouais je sais c un vieux compilo tout pourri lol mais ils y nous imposent ça à la fac ).  
Et j'ai un petit pb avec le mode graphique.  
 
En fait je fais un casse briques tout marche à peu près bien mais le déplacement de la balle se fait de manière saccadé.  
La balle (représenté par un cercle) se déplace comme il faut mais ça se voit qu'à chaque fois la position précédente est effacée.  
 
voici juste comme je fais descendre un cercle depuis le haut de l'écran :  
 

Code :
  1. // ceci est placé dans une boucle  
  2. // la fond d'écran est de couleur 1
  3. setcolor(1);     
  4. circle(100,y,1); 
  5. y=y+0.01;      // on incrémente la position en ordonnée  
  6. setcolor(15);     
  7. circle(100,y,1);


 
voilà donc ma question : comment enlever cet effet saccadé ? Il existerait pas une fonction dans Turbo C permettant justement d'enlever cet effet ?  
 
on m'a dit que ça proviendrait de la lenteur de rafraîchissement de la mémoire video en simple-buffering, la seule façon de supprimer cet effet étant d'utiliser le double-buffering.
Vous sauriez comment faire ?
 
merci d'avance  
a+  
 
sylvain

Reply

Marsh Posté le 02-04-2003 à 21:06:08   

Reply

Marsh Posté le 02-04-2003 à 21:46:57    

Si personne ne se manifeste, y a le principe sur http://www.brackeen.com/home/vga/unchain.html. Voir si code suffisant pour s'en sortir... :??:

Reply

Marsh Posté le 02-04-2003 à 22:16:13    

Ouais le principe j'ai compris mais le code je comprends pas tout en fait.
Le x et le y qu'ils utilisent sont des float ou des int ?
Quelles librairies faut inclure pour que les termes VGA, INPUT_STATUS_1, VRETRACE soient reconnus par Turbo C?


Message édité par sylsau le 02-04-2003 à 22:17:33
Reply

Marsh Posté le 03-04-2003 à 13:01:21    

up  :bounce:

Reply

Marsh Posté le 03-04-2003 à 18:38:01    

J'ai pas regardé (manque de temps pour ça, prog que le soir).
 
Les spécialistes du DOS semblent partis à la retraite... :D

Reply

Marsh Posté le 03-04-2003 à 19:15:19    

non ils finissent leur vieux jour dans ma fac et nous obligent à nous en servir  :lol:

Reply

Marsh Posté le 11-04-2003 à 17:06:59    

Si tu utilises des BGI, c'est normal que ce soit lent ...
 
Tu es sous Dos, profite du mode 13h, il est très pratique ...
 
Tu bosses sur un buffer à côté et quand tu as fini, tu envoies le buffer sur l'écran (tu peux même attendre le VBlank pour être tranquille ...)

Reply

Marsh Posté le 11-04-2003 à 17:55:14    


Oh la la !!! Mais pourquoi t'emmerder à ce point quand tu pourrais faire bien plus efficace :
 
1. Utilise le mode 13h (320*200*256)
2. Tu créé ensuite une zone mémoire ou le dessin sera effectué. Cette zone ne sera pas affichée à l'écran
3. Tu effaces cette zone
4. Tu fais tes opérations de dessin dans cette zone
5. Tu attends le VBL (=début de rafraichissement vertical de l'écran)
6. Tu bascules ton tampon en A000h
7. Retour au 3 tant que les conditions de défaite/victoire ne sont pas atteintes


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 11-04-2003 à 17:57:14    

Harkonnen a écrit :


Oh la la !!! Mais pourquoi t'emmerder à ce point quand tu pourrais faire bien plus efficace :
 
1. Utilise le mode 13h (320*200*256)
2. Tu créé ensuite une zone mémoire ou le dessin sera effectué. Cette zone ne sera pas affichée à l'écran
3. Tu effaces cette zone
4. Tu fais tes opérations de dessin dans cette zone
5. Tu attends le VBL (=début de rafraichissement vertical de l'écran)
6. Tu bascules ton tampon en A000h
7. Retour au 3 tant que les conditions de défaite/victoire ne sont pas atteintes


 
c'est ce que je voulais dire ! :D

Reply

Marsh Posté le 11-04-2003 à 18:00:29    

theShOcKwAvE a écrit :


 
c'est ce que je voulais dire ! :D


je viens effectivement de m'apercevoir que je me suis fait griller en beauté sur ce coup [:meganne]


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 11-04-2003 à 18:00:29   

Reply

Marsh Posté le 11-04-2003 à 18:08:31    

Harkonnen a écrit :


je viens effectivement de m'apercevoir que je me suis fait griller en beauté sur ce coup [:meganne]


 
On va dire que c'est pas tout à fait grillé : tu donnes quand même plus de précisions que moi ... :D
 
 
Allez, pour le coup, juste pour dire ...
 
Pour passer en mode 13h :
MOV AL, 13h
INT 10h
 
:D

Reply

Marsh Posté le 11-04-2003 à 18:51:10    

j'ai trouvé une solution , j'utilise la fonction delay() et l'effet saccadé n'est plus là.

Reply

Marsh Posté le 12-04-2003 à 00:01:06    

sylsau a écrit :

j'ai trouvé une solution , j'utilise la fonction delay() et l'effet saccadé n'est plus là.


:heink:
 
Tu serais pas en train de nous dire que tu rejette notre belle solution commune, là ? Ca te plait pas, le 13h ? ;)


---------------
last.fm
Reply

Marsh Posté le 12-04-2003 à 00:02:54    

[:leg9]  
encore un qui ne sait pas ce qu'il loupe...


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed