Page 1 sur 1

Problème de couleurs

Publié : dim. 18/déc./2016 23:38
par raven
Bonjour,

j'ai un petit soucis,en installant la version 5.44 lts 64 bits de purebasic.
je me suis aperçu que j'avais un problème de couleur.

à gauche c'est un code lancer en 5,50 x86 et à droite c'est en 64 bits
c'a le fait aussi avec des codes exemple de la doc.

je suis sur w10 64 quelqu'un d'autre à déjà eu le problème?

merci d'avance.

Image

Re: Problème de couleurs

Publié : lun. 19/déc./2016 10:00
par Guillot
salut,

tu peux montrer le code ?

Re: Problème de couleurs

Publié : lun. 19/déc./2016 10:01
par Zorro
raven a écrit : je me suis aperçu que j'avais un problème de couleur.

à gauche c'est un code lancer en 5,50 x86 et à droite c'est en 64 bits
c'a le fait aussi avec des codes exemple de la doc.[/img]
precise !

tu dis , que t'as un probleme de couleur , (tu ne dis pas quel probleme exactement )
ensuite tu dis que ça le fait .... ( mais quoi ?? qu'est ce que ça fait ?? )

on n'en sait rien , puisqu'on ne sais pas ce que ça devrai faire ...
met toi a notre place !

nous on ne sait pas ce qu'est sensé faire ton programme , :roll: :lol: :lol:

Re: Problème de couleurs

Publié : lun. 19/déc./2016 12:57
par raven
les couleurs sont delavé,je m'en était pas aperçu vu que j'utilisé la 5.50 x86.
mais le problème est quand j'utilise une version 5.44 lts x64 ou meme 5.50x64 de purebasic

ce code en x 86 m'affiche bien des couleurs jaune vert bleu rouge,mais en x64 c'est bleu clair,blanc
j'avais mis un gif dans mon post (capturer avec licecap) c'a s'affiche pas chez vous?car moi je le vois

Code : Tout sélectionner

EnableExplicit
;- Initialisations
If InitSprite()=0 Or InitKeyboard()=0 ;or UsePNGImageDecoder()=0
MessageRequester("Probleme","Initialisations impossibles",0)
End
EndIf

Enumeration fenetre
#fenetre
EndEnumeration

Enumeration
#bouton
#bouton2
#bouton3
EndEnumeration

#largeur_ecran = 640
#hauteur_ecran =480

Global Event,i
Global couleur.f,couleur2.f,largeur_ecran ,hauteur_ecran 

;fenetre
OpenWindow(#fenetre,0,0,#largeur_ecran,#hauteur_ecran,"Pure Miga",#PB_Window_ScreenCentered|#PB_Window_SystemMenu )

OpenWindowedScreen(WindowID(#fenetre),0,0,#largeur_ecran,#hauteur_ecran)

Procedure bouton()
CreateSprite(#bouton,155,155)
StartDrawing(SpriteOutput(#bouton))
Box(0,0,155,155,RGB(155*couleur2,255*couleur,150*couleur2))
StopDrawing()
EndProcedure

Procedure bouton2()
CreateSprite(#bouton2,55,55)
StartDrawing(SpriteOutput(#bouton2))
Box(0,0,55,55,RGB(125*couleur2,255*couleur,70))
StopDrawing()
EndProcedure

Procedure bouton3()
CreateSprite(#bouton3,55,55)
StartDrawing(SpriteOutput(#bouton3))
Box(0,0,55,55,RGB(75*couleur,25*couleur,150))
StopDrawing()
EndProcedure


Repeat;2d
  Repeat ;event fenetre

 Event = WindowEvent()

Select Event    
Case #PB_Event_CloseWindow
End
EndSelect  

Until Event=0

FlipBuffers()
ClearScreen(RGB(0,0,0))
ExamineKeyboard()

bouton()
bouton2()
bouton3()

DisplayTransparentSprite(#bouton2,40,225,155)

DisplayTransparentSprite(#bouton,200,225,155)

DisplayTransparentSprite(#bouton3,420,225,155)
;-------------------------------
couleur = couleur.f-0.025
couleur2 = couleur2.f - 0.035

Until KeyboardPushed(#PB_Key_Escape) Or event = #PB_Event_CloseWindow
End

Re: Problème de couleurs

Publié : lun. 19/déc./2016 13:59
par Zorro
je pense que c'est un probleme lié a ta variable : Couleur.f et Couleur2.f

en principe un Float fait 4 octets , mais que ce passe t'il en compilation 64 bits ??

probablement un probleme d'alignement

je veux dire qu'une operation comme celle-ci
couleur.f= couleur.f-0.025

sur un Flottant en 32 bits n'a peut etre pas la meme valeur sur 64 bits !??
je veux dire le rapport finale , sur une echelle de 32 bits , est forcement moindre sur une echelle de 64 bits non ?

je suis une quiche en math ...
mais intuitivement , sur une echelle de 32 barreaux , en prendre 16 , represente 50%
mais en prendre 16 sur une echelle de 64 barreaux , ça ne represente plus 50% , mais 25 % !

Re: Problème de couleurs

Publié : lun. 19/déc./2016 15:06
par raven
je suis nul en math,et en code la meme.
par contre modifiant ç'a:

Code : Tout sélectionner

Procedure bouton()
CreateSprite(#bouton,155,155)
StartDrawing(SpriteOutput(#bouton))
Box(0,0,155,155,RGB(255+couleur,255,255+couleur2))
StopDrawing()
EndProcedure

Procedure bouton2()
CreateSprite(#bouton2,55,55)
StartDrawing(SpriteOutput(#bouton2))
Box(0,0,55,55,RGB(125+couleur2,255+couleur,70+couleur))
StopDrawing()
EndProcedure

Procedure bouton3()
CreateSprite(#bouton3,55,55)
StartDrawing(SpriteOutput(#bouton3))
Box(0,0,55,55,RGB(75+couleur,25+couleur,150+couleur2))
StopDrawing()
EndProcedure

Code : Tout sélectionner

couleur.f = couleur.f-0.25
couleur2.f = couleur2.f - 0.35
c'a fonctionne j'ai des couleurs

Re: Problème de couleurs

Publié : lun. 19/déc./2016 15:48
par Zorro
bon et bien , tout est bien qui fini bien :)

Re: Problème de couleurs

Publié : jeu. 22/déc./2016 12:50
par Ollivier
Zorro a écrit :je suis une quiche en math ...
mais intuitivement , sur une echelle de 32 barreaux , en prendre 16 , represente 50%
mais en prendre 16 sur une echelle de 64 barreaux , ça ne represente plus 50% , mais 25 % !
Ce qui représente 50% c'est de prendre tous les barreaux sauf le plus fort (ou de prendre ce seul barreau le plus fort)

Ce qui représente 25% c'est de prendre tous les barreaux sauf les 2 plus forts (ou de prendre le seul 2ème plus fort).

Prendre la moitiée des barreaux faibles en 32 bits, entier, c'est prendre la racine carrée de 4 milliards (2 pow 32).

En flottant, c'est comme les entiers, sauf qu'il faut réserver quelques barreaux pour la mantisse. (la position de la virgule)