Jump to content
  • Advertisement
Sign in to follow this  
BaneTrapper

c++ SDL FPS Capping and displaying No proper tutorial

This topic is 2216 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hello.
This easy and simple concept, Done it thousand times before and now am getting problems...

Tutorial should have:
How to cap FPS,
Needs to be able to count fps so its printable to screen;
Should have delta time.

Cant find proper tutorial any suggestions. Edited by BaneTrapper

Share this post


Link to post
Share on other sites
Advertisement

What have you tried? What problems are you having now that you didn't have before?


I remember i did SDL application that capped frames per second, Counted loops, Make approximation on how much is a FPS and all that good stuff
and i printed everything to screen,
i got bout 20folders each with about 20+ projects its hard to find one i need. If i knew name at least.

My current problem is that,
Uint32 a = SDL_GetTicks();
//10 milisec passed;
Uint32 b = SDL_GetTicks() - a;
b is not 10 nor its 100 nor its 1 i get illogical number
Its 100% Uint32 = Uint32 - Uint32 and i dont get it;

Edit:: i know SDL_GetTicks() is inacurate to 10 milisec but i get such random numbers like 1031 one loop next one i get 323

I tried searching on google a good tutorial but difficult to find a proper one.
So could you suggest one Edited by BaneTrapper

Share this post


Link to post
Share on other sites
FPS capping is not something that is API-specific, though certain APIs may have features to assist in it.
You don't need a tutorial on "FPS capping in SDL", but just one on FPS capping, which you personally happen to use in SDL.

But really, you don't normally want to cap your FPS (the drawing of the game). Typically, you either cap or interpolate your logic (the moving of objects in the game).
If you successfully can handle the speed that your game updates, then the program can draw as fast or slow as the computer wants without harm (unless it gets too slow).

You can either fix your timestep (cap your logic updates) or have frame independent movement (move your logic based on how much time has passed).
But if you decide to cap your FPS anyway, here's how.

The only time you really want to cap your framerate is if you are syncronizing your game's framerate with the monitor refresh rate.

Share this post


Link to post
Share on other sites
Typically, I use something like this:

[source lang="cpp"]while (1){

Uint32 time_before = SDL_GetTicks();

render();

Uint32 time_after = SDL_GetTicks();

int delta = time_after - time_before;
int time_wait = (1000 / 60) - delta; // cap at 60 fps

if (time_wait > 0){
SDL_Delay(time_wait)
}


}[/source]

It might not be 100% accurate, but it does what I want. Edited by Goran Milovanovic

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!