Пример #1
0
int WindowManager::getFramerate()
{
    if (!settings.limitFps)
        return 0;

    return SDL_getFramerate(&fpsManager);
}
Пример #2
0
void Draw(SDL_Renderer *renderer, FPSmanager *fpsm)
{
	int newRate;
	int currentRate;

		/* FPSmanager: get current rate */
		currentRate = SDL_getFramerate(fpsm);

		/* Set/switch framerate */
		timeout--;
		if (timeout < 0) {
			/* New rate */
			newRate = 5 + 5 * (rand() % 10);

			/* Update timeout */
			timeout = 2 * newRate;

			/* New Color */
			r = rand() & 255;
			g = rand() & 255;
			b = rand() & 255;

			/* FPSmanager: set new rate */
			SDL_setFramerate(fpsm, newRate);
		}

		/* Black screen */
		ClearScreen(renderer);

		/* Move */
		x += dx;
		y += dy;

		/* Reflect */
		if ((x<0) || (x>WIDTH)) { dx=-dx; }
		if ((y<0) || (y>HEIGHT)) { dy=-dy; }

		/* Draw */
		filledCircleRGBA (renderer,x,y,30,r,g,b,255);
		circleRGBA(renderer,x,y,30,255,255,255,255);

		/* Report set rate and current delay (from last iteration) */
		if (time_passed > 0) {
			SDL_snprintf(messageText, 1024, "Set rate: %4iHz   Last delay=%4ims / Calc.Rate=%4iHz", currentRate, time_passed, 1000 / time_passed); 
			stringRGBA (renderer, WIDTH/2 - 4*strlen(messageText),HEIGHT-24,messageText,255,255,255,255);
		}

		/* Simulate some random delay from drawing, business logic, network interaction, etc. */
		SDL_Delay(1 + rand() % 10);

		/* Display */
		SDL_RenderPresent(renderer);

		/* FPSmanager: Delay to a fixed rate */                   
		time_passed = SDL_framerateDelay(fpsm);  
}
Пример #3
0
	int DesiredFPS(){
		return SDL_getFramerate(&fpsm);
	}