diff options
Diffstat (limited to 'src/main.c')
-rw-r--r-- | src/main.c | 40 |
1 files changed, 29 insertions, 11 deletions
@@ -8,8 +8,8 @@ SDL_Surface* suf; -#define SCREEN_WIDTH 600 /*800*/ -#define SCREEN_HEIGHT 500 /*600*/ +#define SCREEN_WIDTH 600/*800*/ +#define SCREEN_HEIGHT 480/*600*/ typedef void(*F)(void*); F onload; @@ -30,7 +30,7 @@ SETEXAMPLEF(onupdate, i) int main(int argc, char* argv[]) { - if (SDL_Init(SDL_INIT_EVERYTHING) < 0) + if (SDL_Init(SDL_INIT_EVENTS | SDL_INIT_TIMER | SDL_INIT_VIDEO) < 0) return 1; SDL_Window* wnd = SDL_CreateWindow("Soft Shade Room", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN); SDL_Event e; @@ -40,18 +40,24 @@ int main(int argc, char* argv[]) ssr_assert(suf->format->Rshift == 16); ssr_assert(suf->format->Gshift == 8); ssr_assert(suf->format->Bshift == 0); + /* init ssr */ ssr_Config config = { - SCREEN_WIDTH, SCREEN_HEIGHT,/* screen size */ - 0, /* double buffer */ - suf->pixels /* screen buffer */ + SCREEN_WIDTH, SCREEN_HEIGHT, + 0, + suf->pixels }; ssr_init(&config); + SETEXAMPLE(EXAMPLECUR); + onload(0); + /* main loop */ - uint previous = SDL_GetTicks(); + uint prev = SDL_GetTicks(); uint dt = 0; + uint frame_count = 0; + uint time_stamp = 0; while (1) { while (SDL_PollEvent(&e)) { if (e.type == SDL_QUIT) { @@ -60,15 +66,27 @@ int main(int argc, char* argv[]) onevent(&e); } } - dt = SDL_GetTicks() - previous; - previous = dt + previous; + + dt = SDL_GetTicks() - prev; + prev += dt; + time_stamp += dt; + ++frame_count; + if (time_stamp >= 1000) { + printf("%3d fps\n", frame_count); + time_stamp -= 1000; + frame_count = 0; + } + onupdate(&dt); ondraw(0); ssr_present(); SDL_UpdateWindowSurface(wnd); - Sleep(10); /*100fps limit*/ + + Sleep(1); /*reduce cpu usage*/ } - quit: + +quit: SDL_Quit(); + return 0; } |