Tutorial SDL - Regulando o Processamento e Calculando o Frame Rate

Você que tem acompanhado os tutoriais de SDL da CubaGames deve ter notado que quando roda alguma aplicação o processador vai a 100% e fica lá em cima enquanto o programa está rodando. “Nooossa ele roda algum 3D pesadíssimo?!” você pode pensar. Não, um jogo é simplesmente um loop infinito esperando que você entre com algum comando para ser executado.

Nesse tópico do tutorial, eu vou corrigir isso calculando o “Frame Rate” (quadros por segundo), ou seja, quantas vezes por segundo o programa executa alguma coisa. Vou pegar de exemplo o programinha de Timers do último post de SDL.

Usaremos o mesmo código, mas adicionaremos algumas variáveis:

//A estrutura que usaremos para capturarmos os eventos
SDL_Event evento;

//A fonte que será usada
TTF_Font *fonte = NULL;

//A cor da fonte
SDL_Color cor = { 255, 255, 255 };

//O timer que usaremos para regular os frames por segundo
int timer;

//frames por segundo
int framesPorSegundo = 20;

Ali no começo do código, criei uma variável timer para contar os frames por segundo e o número de frames que você deseja que rode o seu jogo.

No começo do loop principal iremos iniciar nosso timer:

while( quit == false )
{

//iniciando nosso timer
timer = SDL_GetTicks();

A função SDL_GetTicks() retorna o número de milissegundos corridos desde que a SDL foi iniciada. No final desse loop faremos nosso regulador de quadros por segundo e usaremos a função SDL_Delay() para liberar memória para os outros processos do SO.