From 601b30f0628aaa2466e59984ecd91ec3c875d654 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Thu, 5 Oct 2017 15:31:45 -0700 Subject: [PATCH] fix flash when switching display modes --- .../display-plugins/OpenGLDisplayPlugin.cpp | 22 ++++++++++--------- .../display-plugins/hmd/HmdDisplayPlugin.cpp | 2 +- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp index 93e648f441..13abcbadc6 100644 --- a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp +++ b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp @@ -564,17 +564,19 @@ void OpenGLDisplayPlugin::updateFrameData() { std::function OpenGLDisplayPlugin::getHUDOperator() { return [this](gpu::Batch& batch, const gpu::TexturePointer& hudTexture) { - batch.enableStereo(false); - batch.setPipeline(_hudPipeline); - batch.setResourceTexture(0, hudTexture); - if (isStereo()) { - for_each_eye([&](Eye eye) { - batch.setViewportTransform(eyeViewport(eye, getRecommendedRenderSize())); + if (_hudPipeline) { + batch.enableStereo(false); + batch.setPipeline(_hudPipeline); + batch.setResourceTexture(0, hudTexture); + if (isStereo()) { + for_each_eye([&](Eye eye) { + batch.setViewportTransform(eyeViewport(eye, getRecommendedRenderSize())); + batch.draw(gpu::TRIANGLE_STRIP, 4); + }); + } else { + batch.setViewportTransform(ivec4(uvec2(0), getRecommendedRenderSize())); batch.draw(gpu::TRIANGLE_STRIP, 4); - }); - } else { - batch.setViewportTransform(ivec4(uvec2(0), getRecommendedRenderSize())); - batch.draw(gpu::TRIANGLE_STRIP, 4); + } } }; } diff --git a/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.cpp b/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.cpp index e5e1295786..053f3171be 100644 --- a/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.cpp +++ b/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.cpp @@ -431,8 +431,8 @@ std::function HmdDisplayPlugin::H updatePipeline(); return [this](gpu::Batch& batch, const gpu::TexturePointer& hudTexture) { if (pipeline) { - batch.setPipeline(pipeline); + batch.setInputFormat(format); gpu::BufferView posView(vertices, VERTEX_OFFSET, vertices->getSize(), VERTEX_STRIDE, format->getAttributes().at(gpu::Stream::POSITION)._element); gpu::BufferView uvView(vertices, TEXTURE_OFFSET, vertices->getSize(), VERTEX_STRIDE, format->getAttributes().at(gpu::Stream::TEXCOORD)._element);