Page 1 sur 1

[RESOLU] setFrameRate

Publié : mer. 12/sept./2018 10:03
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

Re: setFrameRate

Publié : mer. 12/sept./2018 10:24
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:

Re: setFrameRate

Publié : mer. 12/sept./2018 10:31
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

Re: [RESOLUS] setFrameRate

Publié : mer. 12/sept./2018 10:50
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)

Re: [RESOLU] setFrameRate

Publié : mer. 12/sept./2018 19:59
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.