summaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c40
1 files changed, 29 insertions, 11 deletions
diff --git a/src/main.c b/src/main.c
index 1dd4663..176c2e6 100644
--- a/src/main.c
+++ b/src/main.c
@@ -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;
}