mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2025-06-06 16:34:07 +00:00
vr:: compute iproj correctly
This commit is contained in:
parent
b022c3c84e
commit
4891c735b7
38
vr.cpp
38
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() {
|
EX void start_vr() {
|
||||||
|
|
||||||
if(true) { sm = Id; sm[1][1] = sm[2][2] = -1; }
|
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));
|
println(hlog, "recommended size: ", int(vrdata.xsize), " x ", int(vrdata.ysize));
|
||||||
|
|
||||||
for(int a=0; a<2; a++) {
|
for(int a=0; a<2; a++) {
|
||||||
auto eye = vr::EVREye(a);
|
|
||||||
vrdata.eyes[a] = new vr_framebuffer(vrdata.xsize, vrdata.ysize);
|
vrdata.eyes[a] = new vr_framebuffer(vrdata.xsize, vrdata.ysize);
|
||||||
println(hlog, "eye ", a, " : ", vrdata.eyes[a]->ok ? "OK" : "Error");
|
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, leftEyeDesc );
|
||||||
//CreateFrameBuffer( m_nRenderWidth, m_nRenderHeight, rightEyeDesc );
|
//CreateFrameBuffer( m_nRenderWidth, m_nRenderHeight, rightEyeDesc );
|
||||||
|
|
||||||
@ -1021,7 +1028,8 @@ EX void gen_mv() {
|
|||||||
EX shiftmatrix master_cview;
|
EX shiftmatrix master_cview;
|
||||||
|
|
||||||
EX void render() {
|
EX void render() {
|
||||||
track_poses();
|
track_poses();
|
||||||
|
get_eyes();
|
||||||
resetbuffer rb;
|
resetbuffer rb;
|
||||||
state = 2;
|
state = 2;
|
||||||
vrhr::frusta.clear();
|
vrhr::frusta.clear();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user