summaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2020-02-22 23:33:06 +0800
committerchai <chaifix@163.com>2020-02-22 23:33:06 +0800
commitb656c9415a8e7e3b5b7d8bf1f3c8a5444f830c79 (patch)
treef4f0578d58e5f12b00d2753efef83aaedc03137e /src/main.c
parent9c89460e136ed6c6c43704d9a3a15105e0f006b0 (diff)
*misc
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c28
1 files changed, 22 insertions, 6 deletions
diff --git a/src/main.c b/src/main.c
index 58615d1..404b2d1 100644
--- a/src/main.c
+++ b/src/main.c
@@ -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;
}