X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Fmain.cc;h=fb8a2e20c3798e68aef7a471102755d3eb73f1cb;hb=3aacec4aee795e703e8eb9d6852ca47a3be065ee;hp=f21c406d0850250875b5b087155493485b809fab;hpb=458f4c5972fc6b0ba43ea42c3b8d5c211d8f3f3d;p=laserbrain_demo diff --git a/src/main.cc b/src/main.cc index f21c406..fb8a2e2 100644 --- a/src/main.cc +++ b/src/main.cc @@ -5,7 +5,7 @@ #include #include "app.h" -static bool init(); +static bool init(int argc, char **argv); static void process_event(SDL_Event *ev); static void proc_modkeys(); @@ -41,7 +41,11 @@ int main(int argc, char **argv) SDL_Quit(); return 1; } + fprintf(stderr, "failed to get an sRGB framebuffer.\n"); } + int val; + SDL_GL_GetAttribute(SDL_GL_FRAMEBUFFER_SRGB_CAPABLE, &val); + printf("SDL says we %s an sRGB framebuffer\n", val ? "got" : "didn't get"); if(!(ctx = SDL_GL_CreateContext(win))) { fprintf(stderr, "failed to create OpenGL context\n"); @@ -51,7 +55,7 @@ int main(int argc, char **argv) SDL_GL_GetDrawableSize(win, &win_width, &win_height); win_aspect = (float)win_width / (float)win_height; - if(!init()) { + if(!init(argc, argv)) { SDL_Quit(); return 1; } @@ -113,9 +117,11 @@ bool app_is_fullscreen() void app_grab_mouse(bool grab) { - /*SDL_SetWindowGrab(win, grab ? SDL_TRUE : SDL_FALSE); - SDL_ShowCursor(grab ? 1 : 0); - */ + if(grab) { + SDL_WarpMouseInWindow(win, win_width / 2, win_height / 2); + } + //SDL_SetWindowGrab(win, grab ? SDL_TRUE : SDL_FALSE); + //SDL_ShowCursor(grab ? 1 : 0); SDL_SetRelativeMouseMode(grab ? SDL_TRUE : SDL_FALSE); mouse_grabbed = grab; } @@ -131,11 +137,11 @@ bool app_is_mouse_grabbed() } -static bool init() +static bool init(int argc, char **argv) { glewInit(); - if(!app_init()) { + if(!app_init(argc, argv)) { return false; } @@ -165,7 +171,8 @@ static void process_event(SDL_Event *ev) case SDL_MOUSEMOTION: if(mouse_grabbed) { - app_mouse_delta(ev->motion.xrel, ev->motion.yrel); + // XXX xrel/yrel seems faster by default + app_mouse_delta(ev->motion.xrel * 0.5, ev->motion.yrel * 0.5); } else { app_mouse_motion(ev->motion.x * scale_factor, ev->motion.y * scale_factor); }