Les DisplaySprites clignotent apres un DrawImage

Archive.
Avatar de l’utilisateur
SPH
Messages : 4937
Inscription : mer. 09/nov./2005 9:53

Les DisplaySprites clignotent apres un DrawImage

Message par SPH »

J'ai un code qui fonctionnait tres bien sur PB4 mais plus sur PB4.10 et 4.20
L'affichage ci dessous clignote :

Code : Tout sélectionner

DrawImage(ImageID(0),0,0)
DisplaySprite (p(i,u),i*49+dkx,u*49+dky)
Quand je retire l'une des 2 instructions, il n'y a plus de clignotement...
Dernière modification par SPH le dim. 15/juin/2008 16:59, modifié 1 fois.
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message par djes »

Mets des codes complets s'il te plait!
poshu
Messages : 1138
Inscription : sam. 31/juil./2004 22:32

Message par poshu »

J'ai constaté la même chose que SPH pendant mes tests, j'ai pas trouvé d'explication.
Avatar de l’utilisateur
SPH
Messages : 4937
Inscription : mer. 09/nov./2005 9:53

Message par SPH »

Voici un code qui fabrique une image de fond et des sprites. L'affichage est donc une image de fond et (normalement) une grosse zone remplit de sprites qui couvre presque toute la moitié gauche de l'ecran. Resultat, les sprites du bas ne veulent pas s'afficher (vous verrez tous les sprites un tres court instant lorsque vous appuyerez sur ESC)

Code : Tout sélectionner

; SPH(2008)
; PB4.2

InitSprite() 
InitMouse() 
InitKeyboard() 
InitSprite3D() 
UseJPEGImageDecoder()



;SetPriorityClass_ ( GetCurrentProcess_ (), #IDLE_PRIORITY_CLASS ) 

If OpenScreen(1024,768,32,"") =0
MessageRequester("Erreur", "Impossible d'ouvrir le jeu en 1024*768*32") : End 
EndIf

StartDrawing(ScreenOutput()) 
; creation de sprites clairs
For i=1 To 1000
Box(Random(600),Random(600),Random(300),2+Random(3),RGB(100+Random(155),100+Random(155),100+Random(155)))
Box(Random(600),Random(600),2+Random(3),Random(300),RGB(100+Random(155),100+Random(155),100+Random(155)))
Next
StopDrawing() 
GrabSprite(1,0,0,32,32)
GrabSprite(2,32,0,64,32)
GrabSprite(3,0,32,32,64)
GrabSprite(4,32,32,64,64)
FlipBuffers(1) 

ClearScreen(0)

CreateImage(0, 1024, 768)
StartDrawing(ImageOutput(0))
;StartDrawing(ScreenOutput()) 
; creation d'une image de fond foncée
For i=1 To 1000
Box(Random(1020),Random(764),Random(300),2+Random(6),RGB(Random(55),Random(155),Random(155)))
Box(Random(1020),Random(764),2+Random(6),Random(300),RGB(Random(55),Random(155),Random(155)))
Next
StopDrawing() 
;
;
;
;
Repeat ; affichage
StartDrawing(ScreenOutput()) 
DrawImage(ImageID(0),0,0)
StopDrawing() 
z=1
For u=0 To 16
For i=0 To 12
DisplaySprite(z,100+i*33,100+u*33)
z+1
If z=5
z=1
EndIf
Next
Next

FlipBuffers() 
Delay(1)
ExamineKeyboard() 
Until KeyboardPushed(#PB_Key_All) 
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

chez moi la barre des taches clignote 3-4 fois puis disparait completement

donc ce que tu vois clignoter c'est la barre des taches Windows :)

mais je le répète, chez moi l'effet dure 0.5 seconde, puis apres, fini, tout marche nickel !!

c'est vrais que si tu vois clignoter le bas de l'ecran tout le temps, c'est que ce doit etre la barre des tache , c'est ennuyeux !!

d'ailleurs test en mettant la barre des tache "rétractable automatiquement"
cela devrai arranger ton affaire , si j'ai raison :)
Anonyme

Message par Anonyme »

rajoute ClearScreen(0) après ton repeat et ton histoire est reglée.
Avatar de l’utilisateur
SPH
Messages : 4937
Inscription : mer. 09/nov./2005 9:53

Message par SPH »

Cpl.Bator a écrit :rajoute ClearScreen(0) après ton repeat et ton histoire est reglée.
En effet, ca fonctionne
Mais l'image pleine ecran recouvre de toute facon tout l'ecran. Alors l'image devrait remplacer un cls !!
C dingue quand meme : pb4 ne plantait pas, et a partir de 4.10, ca plante !!
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

SPH a écrit :
Cpl.Bator a écrit :rajoute ClearScreen(0) après ton repeat et ton histoire est reglée.
En effet, ca fonctionne
Mais l'image pleine ecran recouvre de toute facon tout l'ecran. Alors l'image devrait remplacer un cls !!
C dingue quand meme : pb4 ne plantait pas, et a partir de 4.10, ca plante !!
parle en sur le Forum anglais a Fred :)
Avatar de l’utilisateur
SPH
Messages : 4937
Inscription : mer. 09/nov./2005 9:53

Message par SPH »

Dobro a écrit :
SPH a écrit :
Cpl.Bator a écrit :rajoute ClearScreen(0) après ton repeat et ton histoire est reglée.
En effet, ca fonctionne
Mais l'image pleine ecran recouvre de toute facon tout l'ecran. Alors l'image devrait remplacer un cls !!
C dingue quand meme : pb4 ne plantait pas, et a partir de 4.10, ca plante !!
parle en sur le Forum anglais a Fred :)
Non merci. Je n'irais pas au fofo anglais; c'est fred qui viendra a moi (au fofo fr)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

j'en ai parlé ici :
http://www.purebasic.fr/english/viewtop ... highlight=

on verra bien ce que Fred dit :)
MorpheusDX
Messages : 36
Inscription : mar. 21/août/2007 17:31

Message par MorpheusDX »

Concernant ce soucis, personnellement j'ai remarqué ne le rencontrer que lorsque la synchro
est activé (FlipBuffers(1) ou FlipBuffers() ).

Mon écran ayant un taux de rafraichissement de 60Hz, si je cale avec un FlipBuffers(0)
un fps de 60 (grace à un Delay judicieusement calibré) , je ne rencontre pas le soucis.

a suivre donc ...
Force et sagesse...
Avatar de l’utilisateur
SPH
Messages : 4937
Inscription : mer. 09/nov./2005 9:53

Message par SPH »

Dobro a écrit :j'en ai parlé ici :
http://www.purebasic.fr/english/viewtop ... highlight=

on verra bien ce que Fred dit :)
J'ai tjr imaginé que fred etait francais ! Il l'est pas ? Si il l'est, il doit passer sur ce forum je pense (tiens, je me rapelle l'avoir vu un jour, son nom apparait orange)
Avatar de l’utilisateur
Le psychopathe
Messages : 764
Inscription : jeu. 03/mars/2005 19:23

Message par Le psychopathe »

SPH a écrit : J'ai tjr imaginé que fred etait francais ! Il l'est pas ? Si il l'est, il doit passer sur ce forum je pense (tiens, je me rapelle l'avoir vu un jour, son nom apparait orange)
Tout à fait d'accord avec toi ;)
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message par djes »

On va encore dire que je m'énerve mais c'est vraiment du grand n'importe quoi! Si tu désactives la synchro, c'est normal que tu aies un clignotement!!! Faudrait réviser le principe du double-buffer et de l'affichage avant d'accuser à tort et à travers.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

djes a écrit :On va encore dire que je m'énerve mais c'est vraiment du grand n'importe quoi! Si tu désactives la synchro, c'est normal que tu aies un clignotement!!! Faudrait réviser le principe du double-buffer et de l'affichage avant d'accuser à tort et à travers.
il ne la désactive pas apparemment puisqu'il met

Code : Tout sélectionner

FlipBuffers()
8O 8O
Répondre