diff options
author | chai <chaifix@163.com> | 2020-02-22 23:33:06 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2020-02-22 23:33:06 +0800 |
commit | b656c9415a8e7e3b5b7d8bf1f3c8a5444f830c79 (patch) | |
tree | f4f0578d58e5f12b00d2753efef83aaedc03137e /src/main.c | |
parent | 9c89460e136ed6c6c43704d9a3a15105e0f006b0 (diff) |
*misc
Diffstat (limited to 'src/main.c')
-rw-r--r-- | src/main.c | 28 |
1 files changed, 22 insertions, 6 deletions
@@ -5,9 +5,10 @@ #include "ssr.h" #include "example/example.h" #include "extern/wog.h" +#include "extend/camera.h" #define SCREEN_WIDTH 600 -#define SCREEN_HEIGHT 480 +#define SCREEN_HEIGHT 500 typedef void(*F)(void*); F onload; @@ -27,7 +28,7 @@ SETEXAMPLEF(onevent, i)\ SETEXAMPLEF(onupdate, i) int main(int argc, char* argv[]) { - wog_Window* wnd = wog_createWindow("test", SCREEN_WIDTH, SCREEN_HEIGHT, 500, 500, 0); + wog_Window* wnd = wog_createWindow("Soft Shader Room", SCREEN_WIDTH, SCREEN_HEIGHT, 500, 500, 0); wog_show(wnd); wog_Surface* surface = wog_getsurface(wnd); // ARGB format /* init ssr */ @@ -38,7 +39,10 @@ int main(int argc, char* argv[]) { }; ssr_init(&config); SETEXAMPLE(EXAMPLECUR); - onload(0); + onload(NULL); + /*set up global camera*/ + Camera cam; + camera_init(&cam); /* main loop */ uint prev = wog_tick(); uint dt = 0; @@ -47,6 +51,7 @@ int main(int argc, char* argv[]) { wog_Event e; while (1) { while (wog_pollEvent(wnd, &e)) { + camera_onevent(&cam, &e); if (e.type == WOG_ECLOSE) { goto quit; } else { @@ -65,14 +70,25 @@ int main(int argc, char* argv[]) { } onupdate(&dt); - ondraw(0); + + /*set vp matrix*/ + ssr_matrixmode(MATRIX_PROJECTION); + camera_getprojmatrix(&cam, NULL); + ssr_loadmatrix(&cam.proj_matrix); + ssr_matrixmode(MATRIX_VIEW); + camera_getviewmatrix(&cam, NULL); + ssr_loadmatrix(&cam.view_matrix); + ssr_matrixmode(MATRIX_MODEL); + + ondraw(NULL); + ssr_present(); wog_updateSurface(wnd); - Sleep(1); /*reduce cpu using*/ + //Sleep(1); /*reduce cpu using*/ } quit: wog_destroyWindow(wnd); - return 1; + return 0; } |