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

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
kelebrindae
Messages : 579
Inscription : ven. 11/mai/2007 15:21

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

Message par kelebrindae »

@SPH:
En ajoutant

Code : Tout sélectionner

Debug Str(i) + "," + Str(u) + "," + Str(i+u)
juste après le

Code : Tout sélectionner

color.l=RGB(i,u,i+u)
on obtient beaucoup de résultats du genre "295,214,508" ( RGB(295,214,508) donne 33347367, ce qui est supérieur à 383040)
=> il y a donc bien dépassement.

En remplaçant le

Code : Tout sélectionner

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

Code : Tout sélectionner

color.l=RGB(i & $FF, u & $FF, (i + u) & $FF)
, je passe de 91% d'erreur à 0% .
=> ce dépassement pose donc bien un problème dans le calcul du pourcentage d'erreur.

Cependant, si avec la modif de Djes (ajout des "& $FF"), tu as bien des résultats différents selon qu'un jeu s'exécute en parallèle ou non, alors il y a bien un truc bizarre que l'on peut étudier.

Est-ce que cela clarifie le problème ?
Les idées sont le souvenir de choses qui ne se sont pas encore produites.
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 »

kelebrindae> merci!
Frenchy Pilou
Messages : 2194
Inscription : jeu. 27/janv./2005 19:07

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

Message par Frenchy Pilou »

Je suis hyper rouillé mais "les modulos" ne sont pas fait pour éviter ce genre de débordements?
Et même suivant les les langages se font automatiquement?
Est beau ce qui plaît sans concept :)
Speedy Galerie
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 »

Bon, outre le RGB qui se comporte comme un RGBA, si on le vire et qu'on fait simplement "color.l=i+u", quand un jeu est lancé, j'obtient du noir :

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

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

Message par drfloyd »

djes a écrit :Y'a pas de bug, juste la fonction RGB() qui est un peu trop permissive.
Je ne comprends pas... l'informatique ne peut pas commetre d'erreur, donc que signifie "une fonction permissive" ?!

Je teste un point, le resultat doit toujours etre bon ! Non ?

Moi je constate :

Mon jeu qui teste la couleur du decor pour les colisions fonctionne sur un pc et son mon mac, et quand je le fait tourner sur un autre pc equipe d'une 9600M GT il ne fonctionne plus... Et ça c'est pas un bug ???????? Le même programme à l'octet près.

La carte graphique ne doit pas intervenir la dedans, ca doit etre masqué par le driver.

Enfin bon je suis un debutant sans grandes connaissances mais quand meme c'est le premiere fois de ma vie que je vois un basic qui donne des resultats differents sur 2 PCs.
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 »

drfloyd a écrit :
djes a écrit :Y'a pas de bug, juste la fonction RGB() qui est un peu trop permissive.
Je ne comprends pas... l'informatique ne peut pas commetre d'erreur, donc que signifie "une fonction permissive" ?!

Je teste un point, le resultat doit toujours etre bon ! Non ?

Moi je constate :

Mon jeu qui teste la couleur du decor pour les colisions fonctionne sur un pc et son mon mac, et quand je le fait tourner sur un autre pc equipe d'une 9600M GT il ne fonctionne plus... Et ça c'est pas un bug ???????? Le même programme à l'octet près.

La carte graphique ne doit pas intervenir la dedans, ca doit etre masqué par le driver.

Enfin bon je suis un debutant sans grandes connaissances mais quand meme c'est le premiere fois de ma vie que je vois un basic qui donne des resultats differents sur 2 PCs.
Il y a 2 bugs (sur mon ordi du moins). Un bug qui met dans RGB() plus que la valeur max, et un bug quand la memoire est un peu trop encombré et qui rend noir un point()

PS : je JAMAIS faire de tests de collisions avec un point() !!!!!! Refere toi plutot a une table de variables !

!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 »

C'est difficile à expliquer. Le plot dessine un point à l'écran. Si on lui donne une valeur de couleur hors limite, il va réagir différemment suivant les cartes. D'autant que cette valeur hors limite joue sur l'alpha (la transparence), qui est gérée différemment suivant les pilotes, les modes, les cartes, les versions de DX!
Du coup, le point ne lit pas la valeur que l'on a donnée au plot.
Maintenant, il serait intéressant de voir si certains pilotes ne forcent pas certains effets, comme par exemple un antialiasing plein écran. Du coup, la carte graphique peut modifier les valeurs, et le point donner un résultat complètement différent.

Voici un petit code très simple pour faire des essais (activer le débogueur).

Code : Tout sélectionner

Define Couleur.l

Macro Guillemet
    "
EndMacro

Macro Bug_Test(Couleur)
  
  Plot(0, 0, Couleur)
  
  If Point(0, 0) <> Couleur
    Debug Guillemet#Couleur:Bug"
  EndIf
  
EndMacro

;-*** DEBUT

InitSprite()
InitKeyboard() 
InitMouse()

OpenScreen(640, 480, 32, "")

StartDrawing(ScreenOutput()) 

;- Test 1
Bug_Test($FFFFFF)

;- Test 2
Bug_Test($FFFFFF + 1)

;- Test 3
Bug_Test(RGB(255, 255, 255))

;- Test 4
Bug_Test(RGB(255 + 1, 255, 255))

StopDrawing()

End
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 »

$FFFFFF + 1:Bug
RGB(255 + 1, 255, 255):Bug
A noter que j'ai changé de carte graphique et que nvidia et ati me donnent le meme resultat...
Je testerais demain quand mon jeu sera fini (actu il tourne en memoire)

EDIT : @tonton : ma CG est toute neuve :!:
Dernière modification par SPH le lun. 22/nov./2010 17:21, modifié 3 fois.

!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
tonton
Messages : 315
Inscription : mar. 26/avr./2005 15:19

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

Message par tonton »

J' avais a peu près le même type de bug y a un moment!
Des défauts de pixel manquant fuite mémoire avec opengl, plantage.
C' était en fait, des cases de mémoires vive défectueuses sur la carte graphique.
Pourtant Windows fonctionnait bien.....
tonton
Messages : 315
Inscription : mar. 26/avr./2005 15:19

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

Message par tonton »

SPH a écrit :
$FFFFFF + 1:Bug
RGB(255 + 1, 255, 255):Bug
A noter que j'ai changé de carte graphique et que nvidia et ati me donnent le meme resultat...
Je testerais demain quand mon jeu sera fini (actu il tourne en memoire)
Essaye en enlevant une barrette de ram ou l' autre!
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 »

tonton a écrit :
SPH a écrit :
$FFFFFF + 1:Bug
RGB(255 + 1, 255, 255):Bug
A noter que j'ai changé de carte graphique et que nvidia et ati me donnent le meme resultat...
Je testerais demain quand mon jeu sera fini (actu il tourne en memoire)
Essaye en enlevant une barrette de ram ou l' autre!
Je sais ce que ca fait d'avoir une barette memoire defaillante. Et la je peux affirmer que ce n'est pas ca. En plus, j'ai de la marque. C'est meme sur, j'ai plusieurs fois bourrer a mort la memoire et elle n'a JAMAIS planté (style 5 applications lancées).
Nan, je ne vois que PB qui ne lit pas au bon endroit les point() qu'on lui fait suivant si la memoire est vide ou pas...

!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 »

Mais non, le fait que ça bug sur ces valeurs est normal, puisqu'il y a dépassement dans l'alpha.

$FFFFFF = $00FFFFFF = RGB(255, 255, 255) = %11111111 11111111 11111111

$FFFFFF + 1 = RGB(255 + 1, 255, 255) = %00000001 00000000 00000000 00000000

Plot ou point ne tient pas compte de l'alpha, du coup, ça bug. Il faut s'assurer de limiter à [0 ; 255] les composantes données à plot().
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 :Plot ou point ne tient pas compte de l'alpha, du coup, ça bug. Il faut s'assurer de limiter à [0 ; 255] les composantes données à plot().
C'est quand meme pour moi nouveau et tres surprenant.

Donc, pour l'autre "bug", tu ne t'expliques pas pourquoi un code pb donne des resultats d'affichage differents suivant qu'un jeu est lancé en memoire ou pas ?!
Je reste avec mon bug alors ??? (pour cette partie, personne n'a essayé mon code avec un jeu ?)

!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 »

Dans ton code, la variable u dépasse très largement les 255. Je vais essayer ce soir avec un modulo ou un "and" ou un test, et un jeu.
Frenchy Pilou
Messages : 2194
Inscription : jeu. 27/janv./2005 19:07

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

Message par Frenchy Pilou »

ah on y vient au modulo :D
Est beau ce qui plaît sans concept :)
Speedy Galerie
Répondre