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

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

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

Message 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.
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

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

Message 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 
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

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

Message 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

:)
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

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

Message par djes »

Bon, passons. Est-ce que c'est un bug à votre avis? PB vérifie rarement les dépassements afin de rester rapide...
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

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

Message 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
Avatar de l’utilisateur
SPH
Messages : 4937
Inscription : mer. 09/nov./2005 9:53

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

Message par SPH »

Si vous lancez un jeu et que vous lancez le code que j'ai fourni, le bug s'empire graaave.

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

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

Message 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...
drfloyd
Messages : 220
Inscription : mar. 21/août/2007 13:30
Contact :

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

Message 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 ?
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

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

Message par djes »

Y'a pas de bug, juste la fonction RGB() qui est un peu trop permissive.
Avatar de l’utilisateur
SPH
Messages : 4937
Inscription : mer. 09/nov./2005 9:53

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

Message 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)

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

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

Message 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).
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

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

Message 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 ;)
Avatar de l’utilisateur
SPH
Messages : 4937
Inscription : mer. 09/nov./2005 9:53

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

Message 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

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

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

Message 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)
Avatar de l’utilisateur
SPH
Messages : 4937
Inscription : mer. 09/nov./2005 9:53

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

Message 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

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Répondre