Page 1 sur 2
Les DisplaySprites clignotent apres un DrawImage
Publié : ven. 13/juin/2008 16:03
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...
Publié : ven. 13/juin/2008 18:38
par djes
Mets des codes complets s'il te plait!
Publié : sam. 14/juin/2008 0:51
par poshu
J'ai constaté la même chose que SPH pendant mes tests, j'ai pas trouvé d'explication.
Publié : dim. 15/juin/2008 11:52
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)
Publié : dim. 15/juin/2008 12:25
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

Publié : dim. 15/juin/2008 13:26
par Anonyme
rajoute ClearScreen(0) après ton repeat et ton histoire est reglée.
Publié : dim. 15/juin/2008 14:33
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 !!
Publié : dim. 15/juin/2008 14:46
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

Publié : dim. 15/juin/2008 15:11
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)
Publié : dim. 15/juin/2008 15:34
par Backup
Publié : dim. 15/juin/2008 16:19
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 ...
Publié : dim. 15/juin/2008 16:57
par SPH
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)
Publié : dim. 15/juin/2008 22:07
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

Publié : lun. 16/juin/2008 9:10
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.
Publié : lun. 16/juin/2008 11:07
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
