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();
+        }
       }
     }
   }