🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fr.comp.sys.amiga
Article #1005

Re: synchro en C

#1005
From: Laurent GIROUD
Date: Mon, 01 Apr 1996 19:12
49 lines
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!news
References: <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)