Skip to content
Snippets Groups Projects
Commit 296989b2 authored by Jaswant Panchumarti (Kitware)'s avatar Jaswant Panchumarti (Kitware) Committed by Kitware Robot
Browse files

Merge topic 'fix-renderer-texture-background-bug'


5aa4b734 Fix bug when render background is toggled between gradient and texture

Acked-by: default avatarKitware Robot <kwrobot@kitware.com>
Tested-by: default avatarbuildbot <buildbot@kitware.com>
Acked-by: default avatarNicolas Vuaille <nicolas.vuaille@kitware.com>
Reviewed-by: Cory Quammen's avatarCory Quammen <cory.quammen@kitware.com>
Merge-request: !10333
parents 64ededc1 5aa4b734
No related branches found
No related tags found
No related merge requests found
......@@ -668,7 +668,7 @@ void vtkOpenGLRenderer::Clear()
std::string fs = vtkOpenGLRenderUtilities::GetFullScreenQuadFragmentShaderTemplate();
ostate->vtkglDisable(GL_DEPTH_TEST);
// Generate VS, FS code.
if (this->TexturedBackground)
if (this->TexturedBackground && texture)
{
vtkShaderProgram::Substitute(fs, "//VTK::FSQ::Decl",
"uniform sampler2D backgroundImage;\n"
......@@ -724,18 +724,18 @@ void vtkOpenGLRenderer::Clear()
"value, 1.0);");
}
// create vtkOpenGLQuadHelper.
if (!this->BackgroundRenderer)
{
this->BackgroundRenderer.reset(
new vtkOpenGLQuadHelper(oglRenWin, nullptr, fs.c_str(), nullptr, false));
}
// re-create vtkOpenGLQuadHelper, because fragment shader code might have changed from the last
// frame. Such change occurs when the render switches from GradientBackground to
// TexturedBackground.
this->BackgroundRenderer.reset(
new vtkOpenGLQuadHelper(oglRenWin, nullptr, fs.c_str(), nullptr, false));
// prep shader program.
oglRenWin->GetShaderCache()->ReadyShaderProgram(this->BackgroundRenderer->Program);
// apply uniforms.
if (this->TexturedBackground)
if (this->TexturedBackground && texture)
{
// load the texture if needed.
texture->InterpolateOn();
texture->Render(this);
this->BackgroundRenderer->Program->SetUniformi("backgroundImage", texture->GetTextureUnit());
}
......@@ -754,7 +754,7 @@ void vtkOpenGLRenderer::Clear()
// draw the background.
this->BackgroundRenderer->Render();
// unload texture.
if (this->TexturedBackground)
if (this->TexturedBackground && texture)
{
texture->PostRender(this);
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment