Article View: fr.comp.sys.amiga
Article #1005Re: synchro en C
From: Laurent GIROUD
Date: Mon, 01 Apr 1996 19:12
Date: Mon, 01 Apr 1996 19:12
49 lines
2721 bytes
2721 bytes
PROUX Guillaume wrote: > > > J'ai un ptit probleme de programmation en C en systeme 1.3. > > J'utilise la technique du double buffer en swappant les bitmap pour > > creer des animations. > > > probleme: lorsque mon objet s'affiche a l'ecran, il a tendance a > > scintiller fortement lorsque celui-ci se deplace. Apparement c'est un > > probleme de synchro vbl. J'utilise la fonction Delay(1) (pause de 1/50ieme > > de seconde) mais ca ne resout pas entierement le probleme. > > Quand mon objet est au milieu de l'ecran ca va encore (il y a le phenomene > > de saccade tout de meme), mais lorqu'il est en haut ou en bas de l'ecran > > je retrouve ce cintillement :(. > > > Ya une solution, pour synchroniser le tout correctement? > > Oui en fait il ne faut pas utiliser Delay qui n'a aucun but de synchronisation. > Il faut user de la fonction graphics WaitTOF(); qui attends le retour du balayage > vertical. Puis ensuite la meilleure methode, la plus OS-amie est de faire un ScreenToFront() de l'ecran que tu veux faire passer en avant! Ca marche impec... > Donc pas user des Bitmaps direct mais plutot ecrire dans un screen et l'amener > en avant apres le WaitTOF... > > Guillaume PROUX (Atelier Amiga) > > PS: C'est vieux ca pour moi mais j'ai pas trop perdu la main. Tout cela fonctionne effectivement, mais on peut y rajouter l'insertion d'un appel a WaitBOVP( struct ViewPort * ) de graphics.library qui pour un viewport donne attend patiemment l'arrivee du rayon video sur la derniere ligne affichee de ce viewport, c'est plus pratique que WaitTOF() car c'est specifique au viewport sur lequel t'affiches et surtout ca te laisse tout le vertical blank pour faire tes reglages alors que WaitTOF() te rend la main en fin de vertical blank donc au moment ou ceux ci devraient deja etre termines. Pour avoir le viewport d'un ecran intuition c'est tout simple, je ne me souvient plus exactement mais c'est un champ de la structure Screen si ma memoire est bonne. Laurent Giroud milu28@bat710.univ-lyon1.fr
Technical Details
Message-ID:
<31602AA9.6DE4@bat710.univ-lyon1.fr>Path:
arc1-ca.pugleaf.net!univ-lyon1.fr!newsReferences:
<4jgkkc$ng8@boson.epita.fr> <4jglgp$r9s@melimelo.enst-bretagne.fr>Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!univ-lyon1.fr!news From: Laurent GIROUD <milu28@bat710.univ-lyon1.fr> Newsgroups: fr.comp.sys.amiga Subject: Re: synchro en C Date: Mon, 01 Apr 1996 21:12:41 +0200 Organization: C.I.S.M. Universite de Lyon 1 / INSA de Lyon Message-ID: <31602AA9.6DE4@bat710.univ-lyon1.fr> References: <4jgkkc$ng8@boson.epita.fr> <4jglgp$r9s@melimelo.enst-bretagne.fr> NNTP-Posting-Host: miage.univ-lyon1.fr Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Mailer: Mozilla 3.0b2 (X11; I; HP-UX A.09.04 9000/856)