comparison Framework/Scene2D/Internals/OpenGLTextRenderer.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 6e888cf6a48b
children 2d8ab34c8c91
comparison
equal deleted inserted replaced
946:dbe3e1e47019 947:1091b2adeb5a
25 { 25 {
26 namespace Internals 26 namespace Internals
27 { 27 {
28 void OpenGLTextRenderer::LoadLayer(const TextSceneLayer& layer) 28 void OpenGLTextRenderer::LoadLayer(const TextSceneLayer& layer)
29 { 29 {
30 data_.reset(new OpenGLTextProgram::Data(context_, alphabet_, layer)); 30 if (!context_.IsContextLost())
31 data_.reset(new OpenGLTextProgram::Data(context_, alphabet_, layer));
32 else
33 data_.reset(NULL);
31 } 34 }
32 35
33 36
34 OpenGLTextRenderer::OpenGLTextRenderer(OpenGL::IOpenGLContext& context, 37 OpenGLTextRenderer::OpenGLTextRenderer(OpenGL::IOpenGLContext& context,
35 OpenGLTextProgram& program, 38 OpenGLTextProgram& program,
47 50
48 void OpenGLTextRenderer::Render(const AffineTransform2D& transform, 51 void OpenGLTextRenderer::Render(const AffineTransform2D& transform,
49 unsigned int canvasWidth, 52 unsigned int canvasWidth,
50 unsigned int canvasHeight) 53 unsigned int canvasHeight)
51 { 54 {
52 if (data_.get() != NULL) 55 if (!context_.IsContextLost() && data_.get() != NULL)
53 { 56 {
54 program_.Apply(texture_, *data_, transform); 57 program_.Apply(texture_, *data_, transform);
55 } 58 }
56 } 59 }
57 60
58
59 void OpenGLTextRenderer::Update(const ISceneLayer& layer) 61 void OpenGLTextRenderer::Update(const ISceneLayer& layer)
60 { 62 {
61 LoadLayer(dynamic_cast<const TextSceneLayer&>(layer)); 63 LoadLayer(dynamic_cast<const TextSceneLayer&>(layer));
62 } 64 }
63 } 65 }