// //--------------------------------------------------------------------------- // // Copyright(C) 2015 Christopher Bruns // All rights reserved. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with this program. If not, see http://www.gnu.org/licenses/ // //-------------------------------------------------------------------------- // /* ** gl_stereo3d.cpp ** Stereoscopic 3D API ** */ #include "gl/system/gl_system.h" #include "gl/stereo3d/gl_stereo3d.h" #include "gl/renderer/gl_renderer.h" #include "vectors.h" // RAD2DEG #include "doomtype.h" // M_PI namespace s3d { /* virtual */ VSMatrix EyePose::GetProjection(float fov, float aspectRatio, float fovRatio) const { VSMatrix result; // Lifted from gl_scene.cpp FGLRenderer::SetProjection() float fovy = (float)(2 * RAD2DEG(atan(tan(DEG2RAD(fov) / 2) / fovRatio))); result.perspective(fovy, aspectRatio, FGLRenderer::GetZNear(), FGLRenderer::GetZFar()); return result; } /* virtual */ Viewport EyePose::GetViewport(const Viewport& fullViewport) const { return fullViewport; } /* virtual */ void EyePose::GetViewShift(float yaw, float outViewShift[3]) const { // pass-through for Mono view outViewShift[0] = 0; outViewShift[1] = 0; outViewShift[2] = 0; } Stereo3DMode::Stereo3DMode() { } Stereo3DMode::~Stereo3DMode() { } // Avoid static initialization order fiasco by declaring first Mode type (Mono) here in the // same source file as Stereo3DMode::getCurrentMode() // https://isocpp.org/wiki/faq/ctors#static-init-order /* static */ const MonoView& MonoView::getInstance() { static MonoView instance; return instance; } } /* namespace s3d */