diff --git a/vr.cpp b/vr.cpp index 6ef99d7d..5bf560b5 100644 --- a/vr.cpp +++ b/vr.cpp @@ -794,6 +794,24 @@ EX void track_actions() { } } +EX void get_eyes() { + for(int a=0; a<2; a++) { + auto eye = vr::EVREye(a); + E4; + vrdata.proj[a] = + vr_to_hr(vrdata.vr->GetProjectionMatrix(eye, 0.01, 300)); + + vrdata.iproj[a] = MirrorZ * inverse(vrdata.proj[a]); + + // println(hlog, "projection = ", vrdata.proj[a]); + + vrdata.eyepos[a] = + vr_to_hr(vrdata.vr->GetEyeToHeadTransform(eye)); + + // println(hlog, "eye-to-head = ", vrdata.eyepos[a]); + } + } + EX void start_vr() { if(true) { sm = Id; sm[1][1] = sm[2][2] = -1; } @@ -830,23 +848,12 @@ EX void start_vr() { println(hlog, "recommended size: ", int(vrdata.xsize), " x ", int(vrdata.ysize)); for(int a=0; a<2; a++) { - auto eye = vr::EVREye(a); vrdata.eyes[a] = new vr_framebuffer(vrdata.xsize, vrdata.ysize); println(hlog, "eye ", a, " : ", vrdata.eyes[a]->ok ? "OK" : "Error"); - - vrdata.proj[a] = - vr_to_hr(vrdata.vr->GetProjectionMatrix(eye, 0.01, 300)); - - vrdata.iproj[a] = MirrorZ * inverse(vrdata.proj[a]); - - println(hlog, "projection = ", vrdata.proj[a]); - - vrdata.eyepos[a] = - vr_to_hr(vrdata.vr->GetEyeToHeadTransform(eye)); - - println(hlog, "eye-to-head = ", vrdata.eyepos[a]); } - + + get_eyes(); + //CreateFrameBuffer( m_nRenderWidth, m_nRenderHeight, leftEyeDesc ); //CreateFrameBuffer( m_nRenderWidth, m_nRenderHeight, rightEyeDesc ); @@ -1021,7 +1028,8 @@ EX void gen_mv() { EX shiftmatrix master_cview; EX void render() { - track_poses(); + track_poses(); + get_eyes(); resetbuffer rb; state = 2; vrhr::frusta.clear();