mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2025-03-28 14:27:04 +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() {
|
||||
|
||||
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();
|
||||
|
Loading…
x
Reference in New Issue
Block a user