[RESOLU] setFrameRate

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

[RESOLU] setFrameRate

Message par microdevweb »

Bonjour à tous,

Voici ma question, si j'utilise

exemple :

Code : Tout sélectionner

SetFrameRate(30)
La vitesse de déroulement sera-t-elle égale quelle que soit la vitesse du Pc ou faut-il encore ajouter un calcul ?

Merci
Dernière modification par microdevweb le mer. 12/sept./2018 13:38, modifié 2 fois.
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: setFrameRate

Message par falsam »

SetFrameRate() définit uniquement le nombre d'images par seconde affiché dans ton screen.
microdevweb a écrit :La vitesse de déroulement sera-t-elle égale quelle que soit la vitesse du Pc ou faut-il encore ajouter un calcul ?
Je pense que tu devras ajouter une notion de delta time.

https://www.purebasic.fr/french/viewtop ... 48#p173648

Ayant des doutes, je vais faire un essai :wink:
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: setFrameRate

Message par microdevweb »

Merci falsam,

Je le pensais bien et c'est ce que l'on doit faire avec d'autre soft en général
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: [RESOLUS] setFrameRate

Message par falsam »

Si l'ensemble du traitement est dans la boucle d'affichage, SetFrameRate() à l'air suffisant.

Code : Tout sélectionner

EnableExplicit

Define n, x, y, Buffer.s

InitSprite() : InitKeyboard()
LoadFont(0, "", 200)

OpenWindow(0, 0, 0, 0, 0, "FullScreen", #PB_Window_BorderLess | #PB_Window_Maximize)
OpenWindowedScreen(WindowID(0), 0, 0, WindowWidth(0), WindowHeight(0))

;Initialisation du nombre d'images par seconde
SetFrameRate(30) ; <-- Rempalace 30 par 1

;Loop
Repeat : Repeat : Until WindowEvent() = 0
  
;Préparation  de l'affichage 
ClearScreen(RGB(75, 0, 130))

StartDrawing(ScreenOutput())
  DrawingFont(FontID(0))
  DrawingMode(#PB_2DDrawing_Transparent)
  x = (ScreenWidth() - TextWidth(Buffer))/2
  y = (ScreenHeight() - TextWidth(Buffer))/2 
  DrawText(x, y, Str(n))
StopDrawing()

;Remplacement de l'image précédente par la nouvelle image
FlipBuffers()

;Mise à jours du traitement avant affichage suivant
n + 1
Buffer = Str(n)

ExamineKeyboard()

Until KeyboardReleased(#PB_Key_Escape)
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
boby
Messages : 261
Inscription : jeu. 07/juin/2007 22:54

Re: [RESOLU] setFrameRate

Message par boby »

SetFraleRate() limite le nombre d'appel de FlipBuffer().
Si tu SetFrameRate(30), ton FlipBuffer() seras appelé 30 fois par secondes.

Si tu SetFrameRate() et que tu n'utilise que du startdrawing/stopdrawing (donc pas de flipbuffer()) ton SetFrameRate() n'auras aucun effet.
Répondre