Showing Framerate with DrawText()?
BlitzMax Forums/BlitzMax Programming/Showing Framerate with DrawText()?
| ||
Does anyone have a function or some code that displays the framerate? |
| ||
I found this here on the forum: Local FPS_Counter:Int Local FPS_Counter_Time:Int Local FPS:Int FPS_Counter=FPS_Counter+1 If FPS_Counter_time+1000 =< MilliSecs() FPS=FPS_Counter' <- Frames/Sec FPS_Counter=0 FPS_Counter_time=MilliSecs() EndIf DrawText "Current FPS: "+FPS,20,20 but it doesnt seem to work? |
| ||
Graphics 640, 480,0 Local FPS_Counter:Int Local FPS_Counter_Time:Int Local FPS:Int While Not KeyDown(KEY_ESCAPE) FPS_Counter = FPS_Counter + 1 If FPS_Counter_time+1000 =< MilliSecs() FPS=FPS_Counter' <- Frames/Sec FPS_Counter=0 FPS_Counter_time=MilliSecs() EndIf DrawText "Current FPS: " + FPS , 20 , 20 Flip Cls Wend End |
| ||
Something like this should work (untested tho). All it does is count the number of screen updates, then store the result in a separate var at the end of each second:Global FramesPerSec:int Global FrameCounter:int Global Start:int While Not KeyDown(KEY_ESCAPE) 'do stuff UpdateFrameCounter() DrawText "FPS: " + FramesPerSec,10,10 Flip Wend Function UpdateFrameCounter() FrameCounter:+1 If Millisecs() > Start + 1000 Start = Millisecs() FramesPerSec = FrameCounter FrameCounter = 0 EndIf End Function |
| ||
@GFX when I use your version, it remains almost at all times at 61 FPS. sometimes 60 FPS. then again, there is nothing going on right now except some drawtext commands |
| ||
that's because the hertz value of the graphic command is at 60 by default, set it to 0 to allow unlimited updates |
| ||
hey man! Thanks!! I will try that! where is the 0 explained in the documentation by the way? |
| ||
oh my graphics command is: Graphics 800,600, 1 (1 for fullscreen) now if I add like you say: Graphics 800,600, 1, 0 I still get a framerate of 1 (split second) then 60 or 61 constantly |
| ||
You'll need to change 'Flip' to 'Flip 0'. (disables vSync, basically). |
| ||
wow ... when i do that! I get a framerate of 3400-3500 ... ???? |
| ||
Sounds about right... |
| ||
sounds about right (insert shocked face here)??? please explain |
| ||
Well, all the code is doing, is drawing a line of text. Disabling vSync means that your PC is going to redraw the screen as fast as it possibly can, so frame rates of 3000+FPS are not uncommon. Framerate is dependent on hardware, obviously. |
| ||
I must not understand then; i believed the highest framerate was 60 per second for NTSC 50 FPS for PAL regions. |
| ||
The code is measuring the speed of logic cycles not monitor refresh rates. What release of Bmax are you using? If not BMAX 1.24 you should upgrade. The documentation for Graphics command states This value can be 0, 16, 24 or 32 depending on the graphics modes available so you shouldn't really be setting 1 for 'depth'. |
| ||
I am using the 1.24; oh, and the "1" does into fullscreen, whereas if i use "0" i run windowed ... |
| ||
and the "1" does into fullscreen ... and so does any non-0 number. However, that parm is the depth and *SHOULD* be set to 16,24 or 32. |
| ||
okie dokey! |