Le debut de la fin du bug du Point()

Programmation d'applications complexes
Avatar de l’utilisateur
venom
Messages : 3137
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Le debut de la fin du bug du Point()

Message par venom »

tiens erreur ligne 84 division par zero impossible :)






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Le debut de la fin du bug du Point()

Message par SPH »

Tres bien LSI !

En parlant de frequence, tu dirais que plus on monte, moins ca clignote, c'est ca ?

PS : parfois div by 0 sur cette ligne :

Code : Tout sélectionner

FPS = FPS_Counter * 1000 / (ElapsedMilliseconds() - FPS_ElapsedTime)

!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: Le debut de la fin du bug du Point()

Message par djes »

Moi j'utilise souvent le petit include fourni dans les exemples de PB ; ça fonctionne très bien et au moins c'est l'utilisateur qui choisit. :/
zaphod
Messages : 135
Inscription : dim. 07/déc./2008 9:32

Re: Le debut de la fin du bug du Point()

Message par zaphod »

Salut tous,

Je me pose des questions sur le bug point.
J'ai fait un equivalent du test de SPH en Blitzmax.
L'exe fait 1313 ko
Il est dispo ici : http://landzone.free.fr/bugpointsph.zip
J'ai testé sur xp et seven 32 bits : j'obtiens 8290 (avec le logo de SPH).

Ce serait bien de tester sur divers configs...

Voici le code utilisé en blitzmax :

Code : Tout sélectionner

Strict

Global sph_image:TImage=LoadImage("sph.bmp",DYNAMICIMAGE)
Global pix:TPixmap
'
If sph_image=Null
RuntimeError "image=null"
EndIf
'
Global u,i,x,cmb:Int
'
pix=LockImage(sph_image,0,True,False)
For u=0 To 72
  For i=0 To 178
    x=ReadPixel(pix,i,u)  
    '
    If x<>-16777216
      cmb=cmb+1
    EndIf
  Next
Next
'
UnlockImage(sph_image,0)


If cmb=8290 Then
Confirm(String.fromlong(cmb)+" = OK ")
Else
Confirm(String.fromlong(cmb)+" = ERREUR ")
EndIf
End

Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Re: Le debut de la fin du bug du Point()

Message par kernadec »

bonjour zaphod
voilà pour ton test sous Windows XP SP2
résolution 1920,1080 chipset intel 82845G
résultat 8290 = OK
cordialement
kelebrindae
Messages : 579
Inscription : ven. 11/mai/2007 15:21

Re: Le debut de la fin du bug du Point()

Message par kelebrindae »

Excellente initiative, Zaphod! Comme ça, on saura si ça vient de PB ou non.

Aucun problème de mon côté, comme en PB => 8290
Remarque: avec ton programme, j'obtiens le même résultat avec ou sans l'antialiasing activé.
Les idées sont le souvenir de choses qui ne se sont pas encore produites.
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Le debut de la fin du bug du Point()

Message par SPH »

djes a écrit :Moi j'utilise souvent le petit include fourni dans les exemples de PB ; ça fonctionne très bien et au moins c'est l'utilisateur qui choisit. :/
Oui mais pour un SCR ou pour toute autre raison, l'utilisateur n'est pas amené a choisir. Et la resolution du bureau n'est pas toujours executable en openscreen. La question est : que faire ?

!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
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Le debut de la fin du bug du Point()

Message par SPH »

zaphod a écrit :Salut tous,

Je me pose des questions sur le bug point.
J'ai fait un equivalent du test de SPH en Blitzmax.
L'exe fait 1313 ko
Il est dispo ici : http://landzone.free.fr/bugpointsph.zip
J'ai testé sur xp et seven 32 bits : j'obtiens 8290 (avec le logo de SPH).
Bonne idee.

!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: Le debut de la fin du bug du Point()

Message par djes »

SPH a écrit :Et la resolution du bureau n'est pas toujours executable en openscreen. La question est : que faire ?
Heink? 8O
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Le debut de la fin du bug du Point()

Message par SPH »

djes a écrit :
SPH a écrit :Et la resolution du bureau n'est pas toujours executable en openscreen. La question est : que faire ?
Heink? 8O
kernadec ne peux pas ouvrir un screen de la resolution de son bureau :|

!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: Le debut de la fin du bug du Point()

Message par djes »

Ben c'est peut-être par rapport à la profondeur... Il a peut-être juste 16 ou 24 bits, et pas 32. Ou alors il a juste assez de mémoire graphique pour un écran, donc il faut lui fermer son bureau avant...
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Le debut de la fin du bug du Point()

Message par SPH »

djes a écrit :Ben c'est peut-être par rapport à la profondeur... Il a peut-être juste 16 ou 24 bits, et pas 32. Ou alors il a juste assez de mémoire graphique pour un écran, donc il faut lui fermer son bureau avant...
Bin, propose lui un code car moi j'ai renoncé et dobro semble confirmer qu'on ne peux pas ouvrir toutes les resolutions supportées par une machine... :oops:
kernadec : tu as combien de memoire ?

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

Re: Le debut de la fin du bug du Point()

Message par Backup »

SPH a écrit : dobro semble confirmer qu'on ne peux pas ouvrir toutes les resolutions supportées par une machine... :oops:
kernadec : tu as combien de memoire ?
pas du tout ! :roll:

je n'arrete pas de te dire justement qu'en utilisant la librairie Desktop() ç'est obligé de marcher !

c'est ta bidouille a vouloir forcer la résolution a 1024X768 qui ne peut pas marcher
notamment sur les netbooks ;)

par contre , il semble y avoir un problème lié a la fonction point()
qui suivant les cartes graphique ( et leur réglage d'optimisation propre) ne renvoie pas
la couleur auquel on s'attends ... mais perso , ça ne m'a jamais gèné :)
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: Le debut de la fin du bug du Point()

Message par Le Soldat Inconnu »

Correction du bug sur le calcul du FPS :mrgreen:

Code : Tout sélectionner

;{- Initialisation
If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0 Or InitSprite3D() = 0
	MessageRequester("Erreur", "Impossible d'initialiser la souris ,le clavier ou l'écran. Vérifiez la présence de DirectX 9 ou supérieur.", 0)
	End
EndIf
;}
;{- Recerche de la dimension de l'écran à ouvrir
Resolution_Choisir = 1 ; Mettre 0 pour tenter de récupérer la résolution du bureau ou 1 pour toujours choisir manuellement la résolution
If ExamineDesktops() ; On récupère la résolution du bureau
	Ecran_Largeur = DesktopWidth(0)
	Ecran_Hauteur = DesktopHeight(0)
	Ecran_Frequence = DesktopFrequency(0)
EndIf
If Ecran_Largeur = 0 Or Resolution_Choisir ; Ou sinon, on propose une résolution
	Resolution_Fenetre = OpenWindow(#PB_Any, 0, 0, 300, 24 * 2 + 8, "", #PB_Window_ScreenCentered | #PB_Window_Invisible | #PB_Window_Tool)
	If Resolution_Fenetre
		Resolution_Liste = ComboBoxGadget(#PB_Any, 4, 4, WindowWidth(Resolution_Fenetre) - 8, 24)
		Resolution_Valider = ButtonGadget(#PB_Any, 4, 4 + 24, WindowWidth(Resolution_Fenetre) - 8, 24, "OK")
		; Recerche des résolutions possible
		If ExamineScreenModes()
			While NextScreenMode()
				; On filtre les résolutions :
				; uniquement 32bits
				; largeur supérieure ou égale à 800 pixels
				; fréquence supérieure ou égale à 60Hz et multiple de 5 (pour éviter les fréquences bizarre style 72Hz
				If ScreenModeDepth() = 32 And ScreenModeWidth() >= 800 And ScreenModeRefreshRate() >= 60 And ScreenModeRefreshRate() %5 = 0
					AddGadgetItem(Resolution_Liste, -1, Str(ScreenModeWidth()) + " x " + Str(ScreenModeHeight()) + " / " + Str(ScreenModeRefreshRate()) + "Hz")
					If ScreenModeWidth() = Ecran_Largeur And ScreenModeHeight() = Ecran_Hauteur And ScreenModeRefreshRate() = Ecran_Frequence ; Si la résolution correspond à celle du bureau, on la sélectionne par défaut
						SetGadgetState(Resolution_Liste, CountGadgetItems(Resolution_Liste) - 1)
					EndIf
				EndIf
			Wend
		EndIf
		If GetGadgetState(Resolution_Liste) = -1 ; Si pas de résolution sélectionnée, on sélectionne la première
			SetGadgetState(Resolution_Liste, 0)
		EndIf
		; Affichage de la fenêtre
		StickyWindow(Resolution_Fenetre, 1)
		HideWindow(Resolution_Fenetre, 0)
		; Boucle d'évènements
		Repeat
			Select WaitWindowEvent()
				Case #PB_Event_Gadget
					Select EventGadget()
						Case Resolution_Valider ; on valide
							If GetGadgetText(Resolution_Liste) <> "" ; Si on a une sélection
								Ecran_Largeur = Val(StringField(GetGadgetText(Resolution_Liste), 1, " "))
								Ecran_Hauteur = Val(StringField(GetGadgetText(Resolution_Liste), 3, " "))
								Ecran_Frequence = Val(StringField(GetGadgetText(Resolution_Liste), 5, " "))
								Resolution_Valider = 0
							EndIf
					EndSelect
				Case #PB_Event_CloseWindow ; si on ferme la fenêtre, on quitte
					End
			EndSelect
		Until Resolution_Valider = 0
	Else
		End
	EndIf
EndIf
;}
;{- On ouvre l'openscreen
If OpenScreen(Ecran_Largeur, Ecran_Hauteur, 32, "Ecran", #PB_Screen_WaitSynchronization, Ecran_Frequence) = 0
	MessageRequester("Erreur", "Impossible d'ouvrir l'écran.", 0)
	End
EndIf
;}

FPS = Ecran_Frequence

Repeat
	ClearScreen($000000)
	
	; On lit les évènements clavier et souris
	ExamineMouse()
	ExamineKeyboard()
	
	; Position de la souris
	x = MouseX()
	y = MouseY()
	
	If Start3D()
			
		Stop3D()
	EndIf
	
	
	; Calcul du FPS
	FPS_Counter + 1
	If FPS_Counter >= FPS
		FPS = FPS_Counter * 1000 /(ElapsedMilliseconds() - FPS_ElapsedTime)
		FPS_Counter = 0
		FPS_ElapsedTime = ElapsedMilliseconds()
	EndIf
	; Affichage du FPS
	StartDrawing(ScreenOutput())
		DrawText(0, 0, "FPS : " + StrD(FPS, 1) + " ; " + StrD(100 * FPS / Ecran_Frequence, 1) + "%")
	StopDrawing()
	
	FlipBuffers()
	
Until KeyboardPushed(#PB_Key_Escape)
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: Le debut de la fin du bug du Point()

Message par Le Soldat Inconnu »

Kernadec et Dobro

avec ce code, vous obtenez quoi comme résolution possible ?

Code : Tout sélectionner

If InitSprite()
		If ExamineScreenModes()
				While NextScreenMode()
						If ScreenModeDepth() = 32
								Debug Str(ScreenModeWidth()) + " x " + Str(ScreenModeHeight()) + " " + Str(ScreenModeRefreshRate()) + "Hz"
						EndIf
				Wend
		EndIf
EndIf
La résolution de votre bureau est dedans ? (surtout pour Kernadec)

:D
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Répondre