X-Git-Url: http://git.mutantstargoat.com?p=demo;a=blobdiff_plain;f=src%2Fmain.cc;h=1e45c4bee3f2f348dcd685d68df675e66e807cef;hp=50eea418a7b8aff72e0c93ff0986feba69e5f041;hb=3082e3c645d1933610b261e6c93c040f32093637;hpb=fcd6773bc770425ede4b47a84eef7cc78342542c diff --git a/src/main.cc b/src/main.cc index 50eea41..1e45c4b 100644 --- a/src/main.cc +++ b/src/main.cc @@ -3,6 +3,8 @@ #include #include +#include + #include "global.h" /* TODO: fix those */ @@ -22,24 +24,30 @@ static void cleanup(); static void display(); /* glfw callbacks */ -static void key_clbk(GLFWwindow *win, int key, int scancode, int action, int mods); -static void motion_clbk(GLFWwindow *win, double x, double y); -static void mouse_clbk(GLFWwindow *win, int button, int action, int mods); + +static void clbk_key(GLFWwindow *win, int key, int scancode, int action, int mods); +static void clbk_motion(GLFWwindow *win, double x, double y); +static void clbk_mouse(GLFWwindow *win, int button, int action, int mods); +static void clbk_reshape(GLFWwindow *win, int width, int height); /* global variables */ + bool use_vulkan; +Mat4 mprojection; GLFWwindow *win; int win_w = 800; int win_h = 600; OrbitCamera *camera; +float phi = 25; +float theta = 0; +float dist = 4; + ShaderManager *sdr_man; /* variables */ -static float phi = 25; -static float theta = 0; -static float dist = 4; +static float aspect; // TODO: remove just for test: static Scene scene; @@ -65,9 +73,10 @@ int main(int argc, char **argv) return 1; } - glfwSetKeyCallback(win, key_clbk); - glfwSetCursorPosCallback(win, motion_clbk); - glfwSetMouseButtonCallback(win, mouse_clbk); + glfwSetKeyCallback(win, clbk_key); + glfwSetCursorPosCallback(win, clbk_motion); + glfwSetMouseButtonCallback(win, clbk_mouse); + glfwSetWindowSizeCallback(win, clbk_reshape); while(!glfwWindowShouldClose(win)) { display(); @@ -82,13 +91,6 @@ int main(int argc, char **argv) static bool init() { - /* TODO */ - /* - TODO changes: - 1- create cam - 2- scene - 3- renderers - */ if(use_vulkan) { if(!init_vulkan()) return false; @@ -108,6 +110,7 @@ static bool init() return false; } +// TODO delete: debugging for(size_t i=0; imesh->name.c_str()); @@ -131,7 +134,7 @@ static void cleanup() } } -static void key_clbk(GLFWwindow *win, int key, int scancode, int action, int mods) +static void clbk_key(GLFWwindow *win, int key, int scancode, int action, int mods) { if(key == GLFW_KEY_ESCAPE && action == GLFW_PRESS) { glfwSetWindowShouldClose(win, GLFW_TRUE); @@ -141,7 +144,7 @@ static void key_clbk(GLFWwindow *win, int key, int scancode, int action, int mod static double prev_x, prev_y; static int button; -static void motion_clbk(GLFWwindow *win, double x, double y) +static void clbk_motion(GLFWwindow *win, double x, double y) { switch(button) { case GLFW_MOUSE_BUTTON_LEFT: @@ -167,12 +170,25 @@ static void motion_clbk(GLFWwindow *win, double x, double y) prev_y = y; } -static void mouse_clbk(GLFWwindow *win, int bn, int action, int mods) +static void clbk_mouse(GLFWwindow *win, int bn, int action, int mods) { button = bn; glfwGetCursorPos(win, &prev_x, &prev_y); } +static void clbk_reshape(GLFWwindow *win, int width, int height) +{ + if(use_vulkan) { + //TODO + return; + } + else { + glViewport(0, 0, width, height); + aspect = (float)width / (float)height; + mprojection = calc_projection_matrix(1000, 0.5, aspect, 45); + } +} + static void display() { if(use_vulkan) {