Mercurial > hg > orthanc-stone
diff Framework/Scene2D/Internals/OpenGLBasicPolylineRenderer.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 | 61ba4b504e9a |
children | 2d8ab34c8c91 |
line wrap: on
line diff
--- a/Framework/Scene2D/Internals/OpenGLBasicPolylineRenderer.cpp Tue Aug 06 15:07:23 2019 +0200 +++ b/Framework/Scene2D/Internals/OpenGLBasicPolylineRenderer.cpp Sat Aug 10 13:07:31 2019 +0200 @@ -34,53 +34,55 @@ layer_.Copy(layer); } - void OpenGLBasicPolylineRenderer::Render(const AffineTransform2D& transform) { - AffineTransform2D t = AffineTransform2D::Combine( - AffineTransform2D::CreateOpenGLClipspace(context_.GetCanvasWidth(), context_.GetCanvasHeight()), - transform); + if (!context_.IsContextLost()) + { + AffineTransform2D t = AffineTransform2D::Combine( + AffineTransform2D::CreateOpenGLClipspace(context_.GetCanvasWidth(), context_.GetCanvasHeight()), + transform); - glUseProgram(0); + glUseProgram(0); - glBegin(GL_LINES); + glBegin(GL_LINES); - for (size_t i = 0; i < layer_.GetChainsCount(); i++) - { - const Color& color = layer_.GetColor(i); - glColor3ub(color.GetRed(), color.GetGreen(), color.GetBlue()); + for (size_t i = 0; i < layer_.GetChainsCount(); i++) + { + const Color& color = layer_.GetColor(i); + glColor3ub(color.GetRed(), color.GetGreen(), color.GetBlue()); - const PolylineSceneLayer::Chain& chain = layer_.GetChain(i); + const PolylineSceneLayer::Chain& chain = layer_.GetChain(i); - if (chain.size() > 1) - { - ScenePoint2D previous = chain[0].Apply(t); + if (chain.size() > 1) + { + ScenePoint2D previous = chain[0].Apply(t); - for (size_t j = 1; j < chain.size(); j++) - { - ScenePoint2D p = chain[j].Apply(t); + for (size_t j = 1; j < chain.size(); j++) + { + ScenePoint2D p = chain[j].Apply(t); - glVertex2f(static_cast<GLfloat>(previous.GetX()), - static_cast<GLfloat>(previous.GetY())); - glVertex2f(static_cast<GLfloat>(p.GetX()), - static_cast<GLfloat>(p.GetY())); + glVertex2f(static_cast<GLfloat>(previous.GetX()), + static_cast<GLfloat>(previous.GetY())); + glVertex2f(static_cast<GLfloat>(p.GetX()), + static_cast<GLfloat>(p.GetY())); - previous = p; - } + previous = p; + } - if (layer_.IsClosedChain(i)) - { - ScenePoint2D p = chain[0].Apply(t); + if (layer_.IsClosedChain(i)) + { + ScenePoint2D p = chain[0].Apply(t); - glVertex2f(static_cast<GLfloat>(previous.GetX()), - static_cast<GLfloat>(previous.GetY())); - glVertex2f(static_cast<GLfloat>(p.GetX()), - static_cast<GLfloat>(p.GetY())); + glVertex2f(static_cast<GLfloat>(previous.GetX()), + static_cast<GLfloat>(previous.GetY())); + glVertex2f(static_cast<GLfloat>(p.GetX()), + static_cast<GLfloat>(p.GetY())); + } } } + + glEnd(); } - - glEnd(); }