Mercurial > hg > orthanc-stone
diff Framework/Scene2D/Internals/OpenGLColorTextureProgram.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 | e3f21a265be5 |
children | 2d8ab34c8c91 |
line wrap: on
line diff
--- a/Framework/Scene2D/Internals/OpenGLColorTextureProgram.cpp Tue Aug 06 15:07:23 2019 +0200 +++ b/Framework/Scene2D/Internals/OpenGLColorTextureProgram.cpp Sat Aug 10 13:07:31 2019 +0200 @@ -36,8 +36,9 @@ { namespace Internals { - OpenGLColorTextureProgram::OpenGLColorTextureProgram(OpenGL::IOpenGLContext& context) : - program_(context, FRAGMENT_SHADER) + OpenGLColorTextureProgram::OpenGLColorTextureProgram(OpenGL::IOpenGLContext& context) + : program_(context, FRAGMENT_SHADER) + , context_(context) { } @@ -46,18 +47,21 @@ const AffineTransform2D& transform, bool useAlpha) { - OpenGLTextureProgram::Execution execution(program_, texture, transform); - - if (useAlpha) + if (!context_.IsContextLost()) { - glEnable(GL_BLEND); - glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); - execution.DrawTriangles(); - glDisable(GL_BLEND); - } - else - { - execution.DrawTriangles(); + OpenGLTextureProgram::Execution execution(program_, texture, transform); + + if (useAlpha) + { + glEnable(GL_BLEND); + glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); + execution.DrawTriangles(); + glDisable(GL_BLEND); + } + else + { + execution.DrawTriangles(); + } } } }