# HG changeset patch # User John Tsiombikas # Date 1408722505 -10800 # Node ID c2eecf764daa76b28a4e19b469acb2f3bde22622 # Parent 90abf4b93cc9a7557a5ebe7a32d9f238172a3634 foo diff -r 90abf4b93cc9 -r c2eecf764daa src/game.cc --- a/src/game.cc Fri Aug 22 17:24:43 2014 +0300 +++ b/src/game.cc Fri Aug 22 18:48:25 2014 +0300 @@ -22,7 +22,6 @@ bool game_init() { vr_init(); - vr_use_module_named("null"); glEnable(GL_DEPTH_TEST); glEnable(GL_CULL_FACE); @@ -106,6 +105,8 @@ vr_output_texture(rtarg->get_texture_id(), 0, 0, (float)rtwidth / (float)rtarg->get_width(), (float)rtheight / (float)rtarg->get_height()); + + vr_swap_buffers(); } static void game_render_eye(int eye) @@ -122,11 +123,11 @@ }*/ glMatrixMode(GL_MODELVIEW); - if(eye == 0 || !vr_view_matrix(eye < 0 ? 0 : 1, mat)) { + //if(eye == 0 || !vr_view_matrix(eye < 0 ? 0 : 1, mat)) { glLoadIdentity(); - } else { + /*} else { glLoadTransposeMatrixf(mat); - } + }*/ glMultTransposeMatrixf(view_matrix[0]); draw_scene(); @@ -160,6 +161,10 @@ switch(key) { case 27: exit(0); + + case ' ': + vr_recenter(); + break; } } diff -r 90abf4b93cc9 -r c2eecf764daa src/main.cc --- a/src/main.cc Fri Aug 22 17:24:43 2014 +0300 +++ b/src/main.cc Fri Aug 22 18:48:25 2014 +0300 @@ -70,10 +70,6 @@ game_update(msec); game_render(); - - if(!vr_swap_buffers()) { - glutSwapBuffers(); - } } static void idle() diff -r 90abf4b93cc9 -r c2eecf764daa src/vr/vr.c --- a/src/vr/vr.c Fri Aug 22 17:24:43 2014 +0300 +++ b/src/vr/vr.c Fri Aug 22 18:48:25 2014 +0300 @@ -71,8 +71,11 @@ int vr_use_module(int idx) { if(idx >= 0 && idx < vr_get_num_active_modules()) { - vrm = vr_get_active_module(idx); - printf("using vr module: %s\n", vrm->name); + struct vr_module *m = vr_get_active_module(idx); + if(m != vrm) { + vrm = m; + printf("using vr module: %s\n", vrm->name); + } return 0; } return -1; diff -r 90abf4b93cc9 -r c2eecf764daa src/vr/vr_libovr.c --- a/src/vr/vr_libovr.c Fri Aug 22 17:24:43 2014 +0300 +++ b/src/vr/vr_libovr.c Fri Aug 22 18:48:25 2014 +0300 @@ -86,6 +86,7 @@ { union ovrGLConfig glcfg; unsigned int dcaps; + void *win = 0; deferred_init_done = 1; @@ -93,22 +94,26 @@ glcfg.OGL.Header.API = ovrRenderAPI_OpenGL; glcfg.OGL.Header.RTSize = hmd->Resolution; - glcfg.OGL.Header.Multisample = 0; + glcfg.OGL.Header.Multisample = 1; #ifdef WIN32 - glcfg.OGL.Window = GetActiveWindow(); + win = GetActiveWindow(); + glcfg.OGL.Window = win; glcfg.OGL.DC = wglGetCurrentDC(); - ovrHmd_AttachToWindow(hmd, glcfg.OGL.Window, 0, 0); assert(glcfg.OGL.Window); + assert(glcfg.OGL.DC); #endif - dcaps = ovrDistortionCap_Chromatic | ovrDistortionCap_Vignette | ovrDistortionCap_TimeWarp | - ovrDistortionCap_Overdrive | ovrDistortionCap_FlipInput; + ovrHmd_AttachToWindow(hmd, win, 0, 0); + //ovrHmd_SetEnabledCaps(hmd, ovrHmdCap_LowPersistence | ovrHmdCap_DynamicPrediction); + + dcaps = ovrDistortionCap_Chromatic | ovrDistortionCap_Vignette;// | ovrDistortionCap_TimeWarp;// | + //ovrDistortionCap_Overdrive; if(!ovrHmd_ConfigureRendering(hmd, &glcfg.Config, dcaps, eye_fov, eye_render_desc)) { fprintf(stderr, "failed to configure LibOVR distortion renderer\n"); } - ovrhmd_EnableHSWDisplaySDKRender(hmd, 0); + //ovrhmd_EnableHSWDisplaySDKRender(hmd, 0); } static void cleanup(void) @@ -207,7 +212,9 @@ static int present(void) { - if(!hmd) return; + if(!hmd) return 0; + + glDisable(GL_DEPTH_TEST); ovrHmd_EndFrame(hmd, pose, &eye_tex[0].Texture); new_frame = 1; @@ -229,6 +236,9 @@ rect.Size.w = (int)((umax - umin) * texsz.w); rect.Size.h = (int)((vmax - vmin) * texsz.h); + printf("eye %d texture: %u [%g, %g] -> [%g, %g]\n", eye, tex, umin, vmin, umax, vmax); + printf(" pixels [%d, %d] -> [%d, %d]\n", rect.Pos.x, rect.Pos.y, rect.Pos.x + rect.Size.w, rect.Pos.y + rect.Size.h); + eye_tex[eye].OGL.Header.API = ovrRenderAPI_OpenGL; eye_tex[eye].OGL.Header.TextureSize = texsz; eye_tex[eye].OGL.Header.RenderViewport = rect;