Page 4 sur 5

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

Publié : mer. 12/janv./2011 20:40
par venom
tiens erreur ligne 84 division par zero impossible :)






@++

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

Publié : jeu. 13/janv./2011 9:41
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)

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

Publié : jeu. 13/janv./2011 10:33
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. :/

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

Publié : jeu. 13/janv./2011 11:39
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


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

Publié : jeu. 13/janv./2011 11:52
par kernadec
bonjour zaphod
voilà pour ton test sous Windows XP SP2
résolution 1920,1080 chipset intel 82845G
résultat 8290 = OK
cordialement

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

Publié : jeu. 13/janv./2011 15:56
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é.

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

Publié : jeu. 13/janv./2011 15:59
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 ?

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

Publié : jeu. 13/janv./2011 16:04
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.

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

Publié : jeu. 13/janv./2011 16:54
par djes
SPH a écrit :Et la resolution du bureau n'est pas toujours executable en openscreen. La question est : que faire ?
Heink? 8O

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

Publié : jeu. 13/janv./2011 17:05
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 :|

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

Publié : jeu. 13/janv./2011 17:32
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...

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

Publié : jeu. 13/janv./2011 17:39
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 ?

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

Publié : jeu. 13/janv./2011 17:48
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é :)

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

Publié : jeu. 13/janv./2011 18:54
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)

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

Publié : jeu. 13/janv./2011 18:56
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