X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=vrfileman;a=blobdiff_plain;f=src%2Fapp.cc;h=e9e4cbbe9de1f8b16fe29f3ebd8aecab85fa4e7b;hp=d8aa1448865becbf0e29b6a231a4cd3df19a2dcb;hb=b7ea5b1ae3f0f0a5eba13b49e303b49876ee209e;hpb=b4582685152d23c4c3b6c7ead4d651c4df06eb01 diff --git a/src/app.cc b/src/app.cc index d8aa144..e9e4cbb 100644 --- a/src/app.cc +++ b/src/app.cc @@ -7,14 +7,13 @@ #include "meshgen.h" #include "backdrop.h" #include "goatvr.h" - -static bool parse_args(int argc, char **argv); +#include "opt.h" int win_width, win_height; float win_aspect; long time_msec; +Mat4 view_matrix; -static bool use_vr; static bool should_swap; static float cam_theta, cam_phi; @@ -26,7 +25,7 @@ static int prev_x, prev_y; bool app_init(int argc, char **argv) { - if(!parse_args(argc, argv)) { + if(!init_options(argc, argv, 0)) { return false; } if(init_opengl() == -1) { @@ -39,16 +38,19 @@ bool app_init(int argc, char **argv) glGetIntegerv(GL_SAMPLES, &aasamples); printf("got %d samples per pixel\n", aasamples); + printf("Max anisotropy: %d\n", glcaps.max_aniso); + glEnable(GL_CULL_FACE); glEnable(GL_DEPTH_TEST); //glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); if(GLEW_ARB_framebuffer_sRGB) { + printf("enabling sRGB framebuffer\n"); glEnable(GL_FRAMEBUFFER_SRGB); } - if(use_vr) { + if(opt.vr) { if(goatvr_init() == -1) { return false; } @@ -73,7 +75,7 @@ bool app_init(int argc, char **argv) void app_cleanup() { - if(use_vr) { + if(opt.vr) { goatvr_shutdown(); } delete mesh_torus; @@ -82,7 +84,7 @@ void app_cleanup() void app_draw() { - if(use_vr) { + if(opt.vr) { // VR mode goatvr_draw_start(); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); @@ -93,13 +95,13 @@ void app_draw() glMatrixMode(GL_PROJECTION); glLoadMatrixf(goatvr_projection_matrix(i, 0.5, 1000.0)); - Mat4 view_mat = goatvr_view_matrix(i); - view_mat.pre_rotate_x(deg_to_rad(cam_phi)); - view_mat.pre_rotate_y(deg_to_rad(cam_theta)); - view_mat.pre_translate(0, -cam_height, 0); + view_matrix = goatvr_view_matrix(i); + view_matrix.pre_rotate_x(deg_to_rad(cam_phi)); + view_matrix.pre_rotate_y(deg_to_rad(cam_theta)); + view_matrix.pre_translate(0, -cam_height, 0); glMatrixMode(GL_MODELVIEW); - glLoadMatrixf(view_mat[0]); + glLoadMatrixf(view_matrix[0]); draw_backdrop(); } @@ -114,13 +116,13 @@ void app_draw() // regular monoscopic mode glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - Mat4 view_mat; - view_mat.pre_rotate_x(deg_to_rad(cam_phi)); - view_mat.pre_rotate_y(deg_to_rad(cam_theta)); - view_mat.pre_translate(0, -cam_height, 0); + view_matrix = Mat4::identity; + view_matrix.pre_rotate_x(deg_to_rad(cam_phi)); + view_matrix.pre_rotate_y(deg_to_rad(cam_theta)); + view_matrix.pre_translate(0, -cam_height, 0); glMatrixMode(GL_MODELVIEW); - glLoadMatrixf(view_mat[0]); + glLoadMatrixf(view_matrix[0]); draw_backdrop(); @@ -149,7 +151,7 @@ void app_keyboard(int key, bool pressed) break; case ' ': - if(use_vr) { + if(opt.vr) { goatvr_recenter(); } break; @@ -176,7 +178,7 @@ void app_mouse_motion(int x, int y) if(bnstate[0]) { cam_theta += dx * 0.5; - if(!use_vr || !goatvr_have_headtracking()) { + if(!opt.vr || !goatvr_have_headtracking()) { cam_phi += dy * 0.5; if(cam_phi < -90) cam_phi = -90; @@ -185,30 +187,3 @@ void app_mouse_motion(int x, int y) } app_redraw(); } - -static bool parse_args(int argc, char **argv) -{ - for(int i=1; i