Le debut de la fin du bug du Point()

Programmation d'applications complexes
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 »

kernadec a écrit :oui il fonctionne normal, je l'ai testé mais je le savais.

l'intérêt d'un programme ce n'est pas d'attendre que l'utilisateur adapte son matériel.
mais au programme de prendre en compte les paramètres et de régler ses problèmes de lui même.

Cordialement
Une question se pose donc : peut on ouvrir un screenopen avec n'importe laquelle des resolutions supporté par l'ordinateur ?

Dobro, tu dirais quoi ?

!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 :
kernadec a écrit :oui il fonctionne normal, je l'ai testé mais je le savais.

l'intérêt d'un programme ce n'est pas d'attendre que l'utilisateur adapte son matériel.
mais au programme de prendre en compte les paramètres et de régler ses problèmes de lui même.

Cordialement
Une question se pose donc : peut on ouvrir un screenopen avec n'importe laquelle des resolutions supporté par l'ordinateur ?

Dobro, tu dirais quoi ?

Clairement je dis non ! tel quel ! Mais ....

si une resolution precise est possible sur un ordinateur
et
si tu utilise ce code :

Code : Tout sélectionner

; Activer une resolution !


#CDS_UPDATEREGISTRY  = $1
#CDS_TEST = $2
#CDS_FULLSCREEN = $4
#CDS_GLOBAL = $8
#CDS_SET_PRIMARY = $10
#CDS_RESET = $40000000
#CDS_SETRECT = $20000000
#CDS_NORESET = $10000000

#DISP_CHANGE_SUCCESSFUL = 0
#DISP_CHANGE_RESTART = 1
#DISP_CHANGE_FAILED = -1
#DISP_CHANGE_BADMODE = -2
#DISP_CHANGE_NOTUPDATED = -3
#DISP_CHANGE_BADFLAGS = -4
#DISP_CHANGE_BADPARAM = -5

#DM_BITSPERPEL = $40000
#DM_PELSWIDTH = $80000
#DM_PELSHEIGHT = $100000
#DM_DISPLAYFREQUENCY = $400000

Procedure SetResolution(RezX, RezY, NbCoul, Frequence, Memoriser) ; si SetResolution=2 la résolution est identique à l'actuelle, si 1 erreur lors de la recherche des infos, sinon regarder #DISP_CHANG_...
    
    dm.DEVMODE
    If EnumDisplaySettings_ (0, -1, @dm)
        If RezX = dm\dmPelsWidth And RezY = dm\dmPelsHeight And NbCoul = dm\dmBitsPerPel And Frequence=dm\dmDisplayFrequency : ProcedureReturn 2 : EndIf
        dmEcran.DEVMODE
        dmEcran\dmSize = SizeOf(dmEcran)
        dmEcran\dmFields = #DM_PELSWIDTH|#DM_PELSHEIGHT|#DM_BITSPERPEL|#DM_DISPLAYFREQUENCY
        dmEcran\dmPelsWidth = RezX
        dmEcran\dmPelsHeight = RezY
        dmEcran\dmBitsPerPel = NbCoul
        dmEcran\dmDisplayFrequency = Frequence
        If Memoriser=1 : Memoriser= #CDS_UPDATEREGISTRY Or #CDS_NORESET : Else : Memoriser= #CDS_FULLSCREEN : EndIf
        dmx = ChangeDisplaySettings_ (@dmEcran,Memoriser)
        ProcedureReturn dmx
    Else
        ProcedureReturn 1
    EndIf
  EndProcedure

  Debug SetResolution(1024,600,32,60,1)  ; Force l'ordinateur a passer dans une resolution precise ! 
qui a pour but de Forcer le passage dans une resolution precise

alors oui là ET SEULEMENT Là !!!
tu pourra faire ce que tu veux !!



Openscreen (1024,768) n'ouvre pas un ecran !!
il Tente d'ouvrir un ecran !!

c'est pourquoi sur mon ordi tes prg ne marchent pas , car mon ordi NE PEUT PAS afficher du
1024X768 !!

mais seulement du 1024X 600 !!!


avant d'ouvrir un ecran en 1024X768 , il te faut utiliser la librairie Desktop()
pour savoir si c'est possible ,
sinon , tu ouvre ton ecran avec les infos renvoyé par Desktop() (la résolution actuel choisi par l'utilisateur)
ou bien
tu Force le changement de Résolution avec le code que je viens de te donner
en utilisant une resolution passe partout (800X600:32) , Résolution commune a TOUS les Ordinateur sous Windows....
ou l'une des Résolution possible sur l'ordinateur Hote .....


comme je te l'ai deja dit ( et c'est a ça que je faisais allusion tout a l'heure )
TU NE DOIS PAS vouloir FORCER une Résolution qui n'existe pas sur l'ordinateur
ton test suivant :

Code : Tout sélectionner

If ExamineDesktops()
   dw.w=DesktopWidth(0)
   dh.w=DesktopHeight(0)
Else
   dw.w=1024
   dh.w=768
EndIf

n'a AUCUN sens !!!

le Mieux etant d'utiliser la Résolution en cours ;
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 »

Dobro a écrit : ton test suivant :

Code : Tout sélectionner

If ExamineDesktops()
   dw.w=DesktopWidth(0)
   dh.w=DesktopHeight(0)
Else
   dw.w=1024
   dh.w=768
EndIf

n'a AUCUN sens !!!

le Mieux etant d'utiliser la Résolution en cours ;
Utiliser la resolution en cours ne fonctionne pas sur divers ordinateurs; celui de kernadec par exemple.
On est donc dans une impasse...

(ca me fait un peu plus pester contre PB que j'ai bien envie d'arreter...)

Une derniere tentative pour l'ordi de Dobro : http://xmas.free.fr/pb/king_pixels.exe
Ce coup ci, j'ai melangé diverses resolutions existantes avec des IF...
Comme ca :

Code : Tout sélectionner

InitSprite() 
InitMouse() 
InitKeyboard() 

;SetPriorityClass_ ( GetCurrentProcess_ (), #IDLE_PRIORITY_CLASS ) 
Global dw.w,dh.w,SPH_Z,SPH_NOMBRE

If ExamineDesktops()
dw=DesktopWidth(0) 
dh=DesktopHeight(0) 
If OpenScreen(dw,dh,32,"") 
Else
  Goto autre
EndIf
Else 
  autre:
dw=1280
dh=1024
If OpenScreen(dw,dh,32,"") 
Else
dw=1280
dh=960
If OpenScreen(dw,dh,32,"") 
Else
dw=1280
dh=800
If OpenScreen(dw,dh,32,"") 
Else
dw=1280
dh=768
If OpenScreen(dw,dh,32,"") 
Else
dw=1280
dh=720
If OpenScreen(dw,dh,32,"") 
Else
dw=1024
dh=768
If OpenScreen(dw,dh,32,"") 
Else
dw=1024
dh=600
If OpenScreen(dw,dh,32,"") 
Else
MessageRequester("Erreur", "OpenScreen impossible")
End
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf 
Dernière modification par SPH le jeu. 06/janv./2011 15:28, modifié 2 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
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 »

Merci SPH
ton code avec le fichier.exe fonctionne sans problème sur mon matos
Cordialement
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 »

Dobro, je sais que tu dois en avoir marre de tout ca mais essayons le code PB pour etre sûr du probleme. Ou ca tombe, on n'est a coté de la plaque :

http://xmas.free.fr/pb/king_pixels.pb

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

Ton code Marche Parfaitement chez moi :)

Tres joli effet au passage ! :)
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 »

Dobro a écrit :Ton code Marche Parfaitement chez moi :)
... en vrai ?

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

Image

;)
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 »

SUPER !!!!!!!!!!!!!!!!!!!

Ceci est donc a retenir :

Code : Tout sélectionner

If ExamineDesktops()
dw=DesktopWidth(0) 
dh=DesktopHeight(0) 
If OpenScreen(dw,dh,32,"") 
Else
  Goto autre
EndIf
Else 
  autre:
dw=1280
dh=1024
If OpenScreen(dw,dh,32,"") 
Else
dw=1280
dh=960
If OpenScreen(dw,dh,32,"") 
Else
dw=1280
dh=800
If OpenScreen(dw,dh,32,"") 
Else
dw=1280
dh=768
If OpenScreen(dw,dh,32,"") 
Else
dw=1280
dh=720
If OpenScreen(dw,dh,32,"") 
Else
dw=1024
dh=768
If OpenScreen(dw,dh,32,"") 
Else
dw=1024
dh=600
If OpenScreen(dw,dh,32,"") 
Else
MessageRequester("Erreur", "OpenScreen impossible")
End
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf 

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

Remarquons une chose quand meme : on n'a pas resolu le bug du Point() qui compte mal sur certaines machines...
La, ca ne buggue plus car j'ai utilisé des datas...

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

Autre grande victoire pour moi : kernadec a reussi a executer mon code :
Sujet du message: Re: ScreenOpen
De: kernadec
Envoyé: Mar 11/Jan/2011 14:16
A: SPH
Message

bonjour SPH
je viens seulement de voir ton MP.... je suis distrait avec mes boites mail,
je viens sur le site en coup de vent,
mais ton fichier king_Pixels.exe fonctionne bien. merci pour cette attention

Cordialement
Ceci grace a ce morceau de code :

Code : Tout sélectionner

If ExamineDesktops()
dw=DesktopWidth(0) 
dh=DesktopHeight(0) 
If OpenScreen(dw,dh,32,"") 
Else
  Goto autre
EndIf
Else 
  autre:
dw=1280
dh=1024
If OpenScreen(dw,dh,32,"") 
Else
dw=1280
dh=960
If OpenScreen(dw,dh,32,"") 
Else
dw=1280
dh=800
If OpenScreen(dw,dh,32,"") 
Else
dw=1280
dh=768
If OpenScreen(dw,dh,32,"") 
Else
dw=1280
dh=720
If OpenScreen(dw,dh,32,"") 
Else
dw=1024
dh=768
If OpenScreen(dw,dh,32,"") 
Else
dw=1024
dh=600
If OpenScreen(dw,dh,32,"") 
Else
MessageRequester("Erreur", "OpenScreen impossible")
End
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf

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

mon dieu .... 8O

Ce serais tellement plus propre en utilisant un code de ce type pour trouver la résolution qui convient. Parce que franchement.

Code : Tout sélectionner

If InitSprite()
	If ExamineScreenModes()
		While NextScreenMode()
			If ScreenModeDepth() = 32 And ScreenModeWidth() >= 800 And ScreenModeRefreshRate() >= 60
				Debug Str(ScreenModeWidth()) + " x " + Str(ScreenModeHeight()) + " " + Str(ScreenModeRefreshRate()) + "Hz"
			EndIf
		Wend
	EndIf
EndIf
Juste pour le plaisir, ma résolution d'écran actuelle n'est pas dans ta liste. C'est 1152 * 864 en 75hz
Tu ne pourra pas ouvrir un écran en 16/9, vu que c'est un cathodique 4/3. Et si tu me colles un rafraichissement à 60hz, alors la, je ne t'explique même pas le désastre, ca va clignoter. Et crois moi, il l'ouvrira en 60Hz par défaut.

Soit tu arrives a prendre la résolution du bureau (comme ça on est sur d'avoir une résolution qui plait à l'utilisateur), soit tu cherches parmis les résolutions que son écran accepte. (le mieux étant de proposer via une petite fenêtre)
Mais surtout, tu ne forces pas de résolution au hasard :D

Je te fais un exemple
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 »

voici un exemple :

il faut personnaliser la ligne 8
Pour lire la résolution du bureau, mettre

Code : Tout sélectionner

Resolution_Choisir = 0
Pour toujours choisir la résolution, mettre

Code : Tout sélectionner

Resolution_Choisir = 1

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 Resolution_Choisir = 0 And ExamineDesktops() ; On récupère la résolution du bureau
	Ecran_Largeur = DesktopWidth(0)
	Ecran_Hauteur = DesktopHeight(0)
	Ecran_Frequence = DesktopFrequency(0)
Else ; 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 à 800 pixels
				; fréquence supérieure à 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")
				EndIf
			Wend
		EndIf
		SetGadgetState(Resolution_Liste, 0)
		HideWindow(Resolution_Fenetre, 0)
		Repeat
			Select WaitWindowEvent()
				Case #PB_Event_Gadget
					Select EventGadget()
						Case Resolution_Valider
							If GetGadgetText(Resolution_Liste) <> ""
								Ecran_Largeur = Val(StringField(GetGadgetText(Resolution_Liste), 1, " "))
								Ecran_Hauteur = Val(StringField(GetGadgetText(Resolution_Liste), 3, " "))
								Ecran_Frequence = Val(StringField(GetGadgetText(Resolution_Liste), 5, " "))
							EndIf
					EndSelect
				Case #PB_Event_CloseWindow
					End
			EndSelect
		Until Ecran_Largeur > 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


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)]
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 »

sympa cette petite fenêtre :) ça peut être utile en effet. :wink:







@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
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 »

Allez j'améliore.

Dans la cas ou l'on demande toujours le choix de la résolution, je sélectionne par défaut la résolution du bureau (si possible)
Le choix se fait toujours avec la variable "Resolution_Choisir"

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


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)]
Répondre