[A tous] BUG GRAPHIQUE de "point(x,y)"
Re: [A tous] BUG GRAPHIQUE de "point(x,y)"
C'est quand meme dingue un tel bug, en quoi la carte graphique peut influer sur le resultat du test d'un pixel, je trouve ce bug enorme.
Et pourquoi il n'a pas été détecté avant, depuis le temps que PB existe ?
Et pourquoi il n'a pas été détecté avant, depuis le temps que PB existe ?
Re: [A tous] BUG GRAPHIQUE de "point(x,y)"
J'ai ce bug depuis quelques années deja.drfloyd a écrit :C'est quand meme dingue un tel bug, en quoi la carte graphique peut influer sur le resultat du test d'un pixel, je trouve ce bug enorme.
Et pourquoi il n'a pas été détecté avant, depuis le temps que PB existe ?
Dis, quand est ce que tu vas faire le test du code en post 1 et nous dire le pourcentage de bugs ??
!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
Re: [A tous] BUG GRAPHIQUE de "point(x,y)"
Salut SPH
Le test donne 21.33% avec Nvidia GeForce8400GS avec XP.
Le test donne 21.33% avec Nvidia GeForce8400GS avec XP.
Re: [A tous] BUG GRAPHIQUE de "point(x,y)"
oui oui je vais faire le test ce soir, je suis pas sur le bon PC là, je suis sur Mac et sur Mac pas de bug.
Ce qui veut dire en tout cas qu'il faut eviter de realiser un jeu qui propose des tests de collision via la couleur des pixels ?!
les dév. devraient supprimer cette instruction, a defaut de la corriger.
Ce qui veut dire en tout cas qu'il faut eviter de realiser un jeu qui propose des tests de collision via la couleur des pixels ?!
les dév. devraient supprimer cette instruction, a defaut de la corriger.
Re: [A tous] BUG GRAPHIQUE de "point(x,y)"
Bof, 21.281328%. Tu me fais douter de mon millier de dollar fraîchement investi, là! 

Re: [A tous] BUG GRAPHIQUE de "point(x,y)"
le 2ème code fonctionne -> 21.366 et des miettes
Re: [A tous] BUG GRAPHIQUE de "point(x,y)"
J'suis buggué à + de 21%
Celeron T1400, portable avec carte graphique intégrée série 4, intel
win7 64x et 4Go de Ram.

Celeron T1400, portable avec carte graphique intégrée série 4, intel

Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
Version de PB : 6.00LTS - 64 bits
Re: [A tous] BUG GRAPHIQUE de "point(x,y)"
SPH> Plutôt que de mettre des nombres aléatoires, tu ne pourrais pas faire des dégradés? Je pense que ça vient d'un filtrage 3D, genre antiaaliasing ou fitrage anisotropique...
Re: [A tous] BUG GRAPHIQUE de "point(x,y)"
c'est le Code de SPH qui bug , pas vos carte graphique !!
j'ai juste retiré ses "%8" qu'il a mis dans son code
testez ce Code , vous verrez a droite et a gauche le même dessin
c'est juste un peu plus long , mais chez moi comme ça , ça marche !!
alors qu'avec son code modifié bourré de "%8" forcement ça mettais des pixels Blanc
puisque c'est ce que demandait le code

j'ai juste retiré ses "%8" qu'il a mis dans son code
testez ce Code , vous verrez a droite et a gauche le même dessin
c'est juste un peu plus long , mais chez moi comme ça , ça marche !!
alors qu'avec son code modifié bourré de "%8" forcement ça mettais des pixels Blanc
puisque c'est ce que demandait le code

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=RGB(Random(i%700),Random(u%400),Random((i+u)%600))
Plot(i,u,color)
P(i,u)=color
Next i
; If u%8=0
StopDrawing()
GrabSprite(0,0,0,#dw,#dh)
FlipBuffers()
DisplaySprite(0,0,0)
StartDrawing(ScreenOutput())
; EndIf
Next u
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))
; ;Debug color
; 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
;;;;;;;;;;;;;;;
Re: [A tous] BUG GRAPHIQUE de "point(x,y)"
Et bien merci, Dobro! "Aucun bug graphique du Point(X,Y)" 

Re: [A tous] BUG GRAPHIQUE de "point(x,y)"
Personne ne regarde les codes ici?
Je serais curieux de savoir comment celui de Dobro fait la comparaison plot/point!

Re: [A tous] BUG GRAPHIQUE de "point(x,y)"
EXACTEMENTdjes a écrit :Personne ne regarde les codes ici?Je serais curieux de savoir comment celui de Dobro fait la comparaison plot/point!

Mais avant d'intervenir, j'ai reverifié mes calculs une enieme fois et je suis sur de moi.
Que Dobro vire les lignes contenant les "%8" pour voir l'affichage ligne par ligne, cela ne me derange pas (AUCUNE incidence sur le but de la routine). Mais qu'il VIRE le moteur meme qui indique si il y a une erreur : NON !!
Vous pouvez parfaitement comprendre ce code qui verifie si la couleur du plot que l'on a mis a gauche est bien la meme que celle que l'on met a droite par une copie avec color=POINT puis PLOT(x,y,color) :
Code : Tout sélectionner
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
...
Next
Changez la ligne
Code : Tout sélectionner
color=RGB(Random(i%700),Random(u%400),Random((i+u)%600))
Autre chose : testez le code. Puis quittez le et lancez un jeu. Repassez sur le bureau et relancez le code. Le jeu en memoire bouffera encore plus de place et generera un plus grand nombre de bugs...
PS : mon code affiche des points blancs la ou il constate une difference entre couleur de gauche et couleur de droite.
Un bon programmeur ne ferait JAMAIS de detection par point !!!!!!!!!!!!!!!!!drfloyd a écrit :Ce qui veut dire en tout cas qu'il faut eviter de realiser un jeu qui propose des tests de collision via la couleur des pixels ?!
!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
Re: [A tous] BUG GRAPHIQUE de "point(x,y)"
y a pas de bug , ni carte graphique , ni bug de pb , juste un code foireux
avec se code, personne n'a de bug :

par exemple , i%700 sature le rouge , chaque composante est codé sur 1 octet , une valeur plus grande va faire "débordé" sur la couleur suivante , il faut toujours vérifier les composante RGBa que l'on passe à RGB , sinon le résultat est aléatoire suivant les CG.RGB(Random(i%700),Random(u%400),Random((i+u)%600))
avec se code, personne n'a de bug :
Code : Tout sélectionner
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; BUG GRAPHIQUE
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Macro ceil(a,b)
If a>b : a=b : EndIf
EndMacro
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
R.a = Random(i%700)
G.a = Random(u%400)
B.a = Random((i+u)%600)
ceil(R,255)
ceil(G,255)
ceil(B,255)
color=RGB(R,G,B)
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))
;Debug color
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
;;;;;;;;;;;;;;;
Re: [A tous] BUG GRAPHIQUE de "point(x,y)"
Yep, on avance, merci G-Rom! Je trouve bizarre que RGB() ne fasse pas le ceil() comme tu le fais. Du coup, j'ai adapté le code de SPH pour générer un fichier hexa quand ça déraille. Voici un extrait du résultat :
Edit : ah, euh, le code :
Assez curieusement, on a effectivement un débordement dans l'octet de poids fort (normalement l'alpha), mais parfois les valeurs des couleurs aussi changent.Point : $000A0377 ; Couleur : $010A0277
Point : $000C01FE ; Couleur : $010C01FE
Point : $001F05A5 ; Couleur : $011F04A5
Point : $000A0185 ; Couleur : $010A0085
Point : $000B013C ; Couleur : $010B003C
Point : $00190530 ; Couleur : $01190530
Point : $004B059A ; Couleur : $014B049A
Point : $0052050D ; Couleur : $0152040D
Point : $00250580 ; Couleur : $01250480
Point : $004201D9 ; Couleur : $014201D9
Point : $004B0320 ; Couleur : $014B0220
Point : $002D05B1 ; Couleur : $012D04B1
Point : $002A0369 ; Couleur : $012A0369
Point : $00180569 ; Couleur : $01180469
Point : $003901D0 ; Couleur : $013901D0
Point : $00720595 ; Couleur : $01720495
Point : $00160310 ; Couleur : $01160210
Point : $006F0355 ; Couleur : $016F0355
Point : $007703E3 ; Couleur : $017703E3
Point : $0008036A ; Couleur : $0108036A
Point : $00320319 ; Couleur : $01320319
Point : $003F03E3 ; Couleur : $013F03E3
Edit : ah, euh, le code :
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=RGB(Random(i%700),Random(u%400),Random((i+u)%600))
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()
OpenFile(0, "c:\RGBbug.txt")
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))
WriteStringN(0, "Point : $" + RSet(Hex(color, #PB_Long), 8, "0")+" ; Couleur : $" + RSet(Hex(p(i, u), #PB_Long), 8, "0"))
;Debug color
percent+1
EndIf
Next
If u%8=0
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Escape)
End
EndIf
StopDrawing()
CloseFile(0)
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
;;;;;;;;;;;;;;;
Re: [A tous] BUG GRAPHIQUE de "point(x,y)"
il n'y avait plus la routine de verif, puisque je constatais de visudjes a écrit :Personne ne regarde les codes ici?Je serais curieux de savoir comment celui de Dobro fait la comparaison plot/point!
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 !!![]()