Mercurial > hg > orthanc-stone
diff Framework/Scene2D/Internals/OpenGLFloatTextureRenderer.cpp @ 947:1091b2adeb5a toa2019081001
Fixed animation frame stopping when returning false + big work on the OpenGL
objects to make them lost context-safe + debug code to forcefully tag a
context as lost + debug macros
author | Benjamin Golinvaux <bgo@osimis.io> |
---|---|
date | Sat, 10 Aug 2019 13:07:31 +0200 |
parents | 4d1f57773b5b |
children | 177e7d431cd1 2d8ab34c8c91 |
line wrap: on
line diff
--- a/Framework/Scene2D/Internals/OpenGLFloatTextureRenderer.cpp Tue Aug 06 15:07:23 2019 +0200 +++ b/Framework/Scene2D/Internals/OpenGLFloatTextureRenderer.cpp Sat Aug 10 13:07:31 2019 +0200 @@ -28,15 +28,19 @@ void OpenGLFloatTextureRenderer::UpdateInternal(const FloatTextureSceneLayer& layer, bool loadTexture) { - if (loadTexture) + if (!context_.IsContextLost()) { - context_.MakeCurrent(); - texture_.reset(new OpenGLFloatTextureProgram::Data(layer.GetTexture(), layer.IsLinearInterpolation())); + if (loadTexture) + { + context_.MakeCurrent(); + texture_.reset(new OpenGLFloatTextureProgram::Data( + context_, layer.GetTexture(), layer.IsLinearInterpolation())); + } + + layerTransform_ = layer.GetTransform(); + layer.GetWindowing(windowCenter_, windowWidth_); + invert_ = layer.IsInverted(); } - - layerTransform_ = layer.GetTransform(); - layer.GetWindowing(windowCenter_, windowWidth_); - invert_ = layer.IsInverted(); } @@ -54,7 +58,7 @@ unsigned int canvasWidth, unsigned int canvasHeight) { - if (texture_.get() != NULL) + if (!context_.IsContextLost() && texture_.get() != NULL) { program_.Apply(*texture_, AffineTransform2D::Combine(transform, layerTransform_), windowCenter_, windowWidth_, invert_);