From b95c80bb40d67e03fd55cb71096a377e09a616c8 Mon Sep 17 00:00:00 2001 From: Alexander Bock Date: Wed, 26 Oct 2016 14:44:42 +0200 Subject: [PATCH] Return the correct window size for side-by-side stereo setting (closing #110) --- src/engine/wrapper/sgctwindowwrapper.cpp | 28 +++++++++++++++--------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/src/engine/wrapper/sgctwindowwrapper.cpp b/src/engine/wrapper/sgctwindowwrapper.cpp index 0b8b1d76f1..d70db6044d 100644 --- a/src/engine/wrapper/sgctwindowwrapper.cpp +++ b/src/engine/wrapper/sgctwindowwrapper.cpp @@ -90,19 +90,27 @@ uint32_t SGCTWindowWrapper::mouseButtons(int maxNumber) const { } glm::ivec2 SGCTWindowWrapper::currentWindowSize() const { - //return glm::ivec2(sgct::Engine::instance()->getCurrentWindowPtr()->getXResolution(), - // sgct::Engine::instance()->getCurrentWindowPtr()->getYResolution()); - - return glm::ivec2(sgct::Engine::instance()->getCurrentWindowPtr()->getXResolution(), - sgct::Engine::instance()->getCurrentWindowPtr()->getYResolution()); + auto window = sgct::Engine::instance()->getCurrentWindowPtr(); + switch (window->getStereoMode()) { + case sgct::SGCTWindow::Side_By_Side_Stereo: + case sgct::SGCTWindow::Side_By_Side_Inverted_Stereo: + return glm::ivec2( + window->getXResolution() / 2, + window->getYResolution()); + case sgct::SGCTWindow::Top_Bottom_Stereo: + case sgct::SGCTWindow::Top_Bottom_Inverted_Stereo: + return glm::ivec2( + window->getXResolution(), + window->getYResolution() / 2); + default: + return glm::ivec2( + window->getXResolution(), + window->getYResolution()); + } } glm::ivec2 SGCTWindowWrapper::currentWindowResolution() const { - //int width, height; - //auto window = sgct::Engine::instance()->getCurrentWindowPtr()->getWindowHandle(); - //glfwGetFramebufferSize(window, &width, &height); - //return glm::ivec2(width, height); - + auto window = sgct::Engine::instance()->getCurrentWindowPtr(); int x, y; sgct::Engine::instance()->getCurrentWindowPtr()->getFinalFBODimensions(x, y); return glm::ivec2(x, y);