Page 4 sur 6

Re: [A tous] BUG GRAPHIQUE de "point(x,y)"

Publié : mer. 17/nov./2010 21:39
par djes
Dobro a écrit :
djes a écrit :Personne ne regarde les codes ici? :roll: Je serais curieux de savoir comment celui de Dobro fait la comparaison plot/point!
il n'y avait plus la routine de verif, puisque je constatais de visu
que le prg marchait en virant certaines partie "douteuse" de son code ;)

G-rom donne une explication de ce qui se passais...

néanmoins le code que j'ai posté en dernier, fonctionne, et ne genere pas de bug chez moi
contrairement au code avant modif ...

il te suffisais donc de lancer mon code, pour Voir qu'il n'y avait plus de "bug"
d'où mon introduction :
c'est le Code de SPH qui bug , pas vos carte graphique !! :roll:
Excuse-moi, je ne voulais pas t'offenser. Mais comment peux-tu affirmer que le code fonctionne si tu ne vérifies pas? De visu? Il est quasiment impossible de distinguer deux pixels qui ont une différence sur une composante de 1/256.

Re: [A tous] BUG GRAPHIQUE de "point(x,y)"

Publié : mer. 17/nov./2010 21:58
par G-Rom
voici un exemple flagrant du problème :

Code : Tout sélectionner

colorA = RGB(1560248384,0,0)
colorB = RGBA(64,128,255,92)


If colorA = colorB
  Debug "colorA = RGB(1560248384,0,0)"
  Debug "colorB = RGBA(64,128,255,92)"
  Debug ""
  Debug "La couleur A est saturé en rouge à tel point"
  Debug "quel est de la même couleur que la B ! ;)" 
EndIf 

Re: [A tous] BUG GRAPHIQUE de "point(x,y)"

Publié : mer. 17/nov./2010 22:14
par Backup
djes a écrit : Excuse-moi, je ne voulais pas t'offenser. Mais comment peux-tu affirmer que le code fonctionne si tu ne vérifies pas? De visu? Il est quasiment impossible de distinguer deux pixels qui ont une différence sur une composante de 1/256.
ben j'ai une bonne vue :)
le prg de Sph fait ressortir des petites taches de couleur sombre dans la myriade de points dessinés, ces taches étaient présentes a gauche et a droite
ça me faisais des points de repère pour me rendre compte que la copie était parfaite chez moi

:)

Re: [A tous] BUG GRAPHIQUE de "point(x,y)"

Publié : mer. 17/nov./2010 22:18
par djes
Bon, passons. Est-ce que c'est un bug à votre avis? PB vérifie rarement les dépassements afin de rester rapide...

Re: [A tous] BUG GRAPHIQUE de "point(x,y)"

Publié : mer. 17/nov./2010 23:00
par G-Rom
ce n'est pas un "bug" au sens propre du terme. comme tu le dis rgb() ne doit pas vérifier la valeur des composantes.
c'est un simple "bit shift" :
colorA = RGB(128,384,212)
colorB = 212 << 16 | 384 << 8 | 128

Debug ColorA
Debug ColorB

Re: [A tous] BUG GRAPHIQUE de "point(x,y)"

Publié : jeu. 18/nov./2010 8:24
par SPH
Si vous lancez un jeu et que vous lancez le code que j'ai fourni, le bug s'empire graaave.

Re: [A tous] BUG GRAPHIQUE de "point(x,y)"

Publié : jeu. 18/nov./2010 9:34
par djes
G-Rom a écrit :ce n'est pas un "bug" au sens propre du terme. comme tu le dis rgb() ne doit pas vérifier la valeur des composantes.
c'est un simple "bit shift" :
colorA = RGB(128,384,212)
colorB = 212 << 16 | 384 << 8 | 128

Debug ColorA
Debug ColorB
Normalement, la valeur pourrait être masquée avec un ET logique

Code : Tout sélectionner

Red = 128
Green = 384
Blue = 212
Color = ((Red & $FF) << 16) | ((Green & $FF) <<8 ) | (Blue & $FF)
Debug RSet(Hex(Color), 8, "0")
En tenant compte de l'ordre des couleurs RGB/BGR...

Re: [A tous] BUG GRAPHIQUE de "point(x,y)"

Publié : lun. 22/nov./2010 9:31
par drfloyd
BOn, est ce possible de resumer le probleme pour les debutants ?

POINT (x,y) ne fonctionne aps correctement sur toutes les cartes graphiques ? C'est bien ça ? C'est donc un bug ?

Normalement cette fonction ne doit pas tenir compte de la carte graphique, cela doit etre transparent à mon avis ?

Re: [A tous] BUG GRAPHIQUE de "point(x,y)"

Publié : lun. 22/nov./2010 9:40
par djes
Y'a pas de bug, juste la fonction RGB() qui est un peu trop permissive.

Re: [A tous] BUG GRAPHIQUE de "point(x,y)"

Publié : lun. 22/nov./2010 9:46
par SPH
djes a écrit :Y'a pas de bug, juste la fonction RGB() qui est un peu trop permissive.
J'attire l'attention sur un probleme qui en est vraiment un : quand je lance un jeu et que je fais le test, PB fait 99.89% d'erreurs de recopiage contre 21%. Si le bug du rgb n'est pas un probleme en soit, le fait de passer de 21% a 99% montre que PB bloque quelque part... (chez moi en tout cas mais faites le test avec un jeu lancé et on en reparle)

Re: [A tous] BUG GRAPHIQUE de "point(x,y)"

Publié : lun. 22/nov./2010 11:00
par djes
SPH a écrit :
djes a écrit :Y'a pas de bug, juste la fonction RGB() qui est un peu trop permissive.
J'attire l'attention sur un probleme qui en est vraiment un : quand je lance un jeu et que je fais le test, PB fait 99.89% d'erreurs de recopiage contre 21%. Si le bug du rgb n'est pas un probleme en soit, le fait de passer de 21% a 99% montre que PB bloque quelque part... (chez moi en tout cas mais faites le test avec un jeu lancé et on en reparle)
Avec quel code? Je ne sais pas si tu as lu tout ce qu'on a dit depuis la dernière fois ; le premier code ne permet pas de tester correctement puisqu'il utilise la fonction RGB() en lui passant des paramètres qui débordent (qui dépassent la valeur 255 par composante).

Re: [A tous] BUG GRAPHIQUE de "point(x,y)"

Publié : lun. 22/nov./2010 11:56
par Backup
djes a écrit : Je ne sais pas si tu as lu tout ce qu'on a dit depuis la dernière fois ; .
tu met le doigt sur le principal defaut de SPH ;)

Re: [A tous] BUG GRAPHIQUE de "point(x,y)"

Publié : lun. 22/nov./2010 12:05
par SPH
djes a écrit :
SPH a écrit :
djes a écrit :Y'a pas de bug, juste la fonction RGB() qui est un peu trop permissive.
J'attire l'attention sur un probleme qui en est vraiment un : quand je lance un jeu et que je fais le test, PB fait 99.89% d'erreurs de recopiage contre 21%. Si le bug du rgb n'est pas un probleme en soit, le fait de passer de 21% a 99% montre que PB bloque quelque part... (chez moi en tout cas mais faites le test avec un jeu lancé et on en reparle)
Avec quel code? Je ne sais pas si tu as lu tout ce qu'on a dit depuis la dernière fois ; le premier code ne permet pas de tester correctement puisqu'il utilise la fonction RGB() en lui passant des paramètres qui débordent (qui dépassent la valeur 255 par composante).
Avec le premier code.
Si si, j'ai tout lu.
Mais pour ecarter un peu le bug du RGB, essaye ce code lorsqu'un jeu est lancé :

Code : Tout sélectionner

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; BUG GRAPHIQUE
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

InitSprite() 
InitKeyboard() 
InitMouse()

#dw=1024
#dh=768
#dc=32

If OpenScreen(#dw,#dh,#dc,"Another Earth")=0
MessageRequester("Erreur", "Screen Open ("+Str(#dw)+","+Str(#dh)+",32) : impossible à ouvrir", 0) : End
EndIf

LoadFont(1, "Arial", 12) 
StartDrawing(ScreenOutput()) 
Box(0,0,#dw/2,#dh,RGB(0,255,0))
Box(#dw/2,0,#dw/2,#dh,RGB(255,0,0))
Box(4,4,#dw/2-8,#dh-8,0)
Box(#dw/2+4,4,#dw/2-8,#dh-8,0)
DrawingMode(#PB_2DDrawing_Default)
DrawingFont(FontID(1)) 
DrawText(#dw/2+30,#dh-30,"WAIT...", RGB(255,255,255))
StopDrawing() 
GrabSprite(0,0,0,#dw,#dh)
FlipBuffers() 
DisplaySprite(0,0,0)

Dim p(#dw/2,#dh)
StartDrawing(ScreenOutput()) 
For u=4 To #dh-5
  For i=4 To #dw/2-5
    color.l=RGB(i,u,i+u)
    Plot(i,u,color)
    p(i,u)=color
Next
If u%8=0
StopDrawing() 
GrabSprite(0,0,0,#dw,#dh)
FlipBuffers() 
DisplaySprite(0,0,0)
StartDrawing(ScreenOutput()) 
EndIf
Next
StopDrawing() 

percent=0
max=0

StartDrawing(ScreenOutput()) 
For u=4 To #dh-5
  For i=4 To #dw/2-5
  color=Point(i,u)
  Plot(i+#dw/2,u,color)
  max+1
  If color<>p(i,u)
    ;Plot(i+#dw/2,u,RGB(255,255,255))
    percent+1  
  EndIf
Next
If u%8=0
  ExamineKeyboard()
  If KeyboardPushed(#PB_Key_Escape)
    End
  EndIf
StopDrawing() 
GrabSprite(0,0,0,#dw,#dh)
FlipBuffers() 
DisplaySprite(0,0,0)
StartDrawing(ScreenOutput()) 
EndIf
Next
StopDrawing() 

LoadFont(1, "Arial", 9) 
StartDrawing(ScreenOutput()) 
DrawingMode(#PB_2DDrawing_Default)
DrawingFont(FontID(1)) 
;descrip$="   Si vous avez la meme chose dans le cadre vert et dans le cadre rouge, vous n'avez pas le bug graphique du ''Point(x,y)''   "
;DrawText(#dw/2-TextWidth(descrip$)/2,#dh-60,descrip$, RGB(255,255,255))
f.f=(percent*100)/max
If f=0
  descrip$=" Aucun bug graphique du ''Point(x,y)'' "  
Else
  descrip$=" Le bug du ''Point(x,y)'' est présent à "+StrF(f.f)+"% "
EndIf
DrawText(#dw/2-TextWidth(descrip$)/2,#dh-36,descrip$, RGB(255,255,255))
StopDrawing() 

;;;;;;;;;; si vous voulez sauvegarder votre image...
GrabSprite(0,0,0,#dw,#dh) : SaveSprite(0,"d:/test_gfx.bmp")
;;;;;;;;;;

FlipBuffers() 

Repeat
ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape)
End
;;;;;;;;;;;;;;;
Chez moi, ca donne carrement ca (meme avec ma nouvelle CG) :
Image

Re: [A tous] BUG GRAPHIQUE de "point(x,y)"

Publié : lun. 22/nov./2010 12:33
par djes
:!:
Tu vois bien que dans ton code

Code : Tout sélectionner

#dw=1024
#dh=768
#dc=32

Code : Tout sélectionner

color.l=RGB(i,u,i+u)
Tu dépasses les limites [0 ; 255] pour les composantes. C'est de là que vient le bug, un dépassement. Il faut que tu fasses

Code : Tout sélectionner

color.l = RGB(i & $FF, u & $FF, (i + u) & $FF)

Re: [A tous] BUG GRAPHIQUE de "point(x,y)"

Publié : lun. 22/nov./2010 12:42
par SPH
NON, je ne depasse rien. La couleur maxi est de 383040 !
Tu ne veux pas de RGB, tres bien ! Remplace :

Code : Tout sélectionner

color.l=RGB(i,u,i+u)
par :

Code : Tout sélectionner

color.l=i+256*u+256*256*(i+u)
Et en tres grande logique, il est IMPOSSIBLE que cet eventuel "bug" fasse ce que je montre dans ma capture d'ecran ! Strictement IMPOSSIBLE

PS : ton color.l = RGB(i & $FF, u & $FF, (i + u) & $FF) ne change rien chez moi