comparison 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
comparison
equal deleted inserted replaced
946:dbe3e1e47019 947:1091b2adeb5a
32 context_(context) 32 context_(context)
33 { 33 {
34 layer_.Copy(layer); 34 layer_.Copy(layer);
35 } 35 }
36 36
37
38 void OpenGLBasicPolylineRenderer::Render(const AffineTransform2D& transform) 37 void OpenGLBasicPolylineRenderer::Render(const AffineTransform2D& transform)
39 { 38 {
40 AffineTransform2D t = AffineTransform2D::Combine( 39 if (!context_.IsContextLost())
41 AffineTransform2D::CreateOpenGLClipspace(context_.GetCanvasWidth(), context_.GetCanvasHeight()), 40 {
42 transform); 41 AffineTransform2D t = AffineTransform2D::Combine(
42 AffineTransform2D::CreateOpenGLClipspace(context_.GetCanvasWidth(), context_.GetCanvasHeight()),
43 transform);
43 44
44 glUseProgram(0); 45 glUseProgram(0);
45 46
46 glBegin(GL_LINES); 47 glBegin(GL_LINES);
47 48
48 for (size_t i = 0; i < layer_.GetChainsCount(); i++) 49 for (size_t i = 0; i < layer_.GetChainsCount(); i++)
49 { 50 {
50 const Color& color = layer_.GetColor(i); 51 const Color& color = layer_.GetColor(i);
51 glColor3ub(color.GetRed(), color.GetGreen(), color.GetBlue()); 52 glColor3ub(color.GetRed(), color.GetGreen(), color.GetBlue());
52 53
53 const PolylineSceneLayer::Chain& chain = layer_.GetChain(i); 54 const PolylineSceneLayer::Chain& chain = layer_.GetChain(i);
54 55
55 if (chain.size() > 1) 56 if (chain.size() > 1)
56 { 57 {
57 ScenePoint2D previous = chain[0].Apply(t); 58 ScenePoint2D previous = chain[0].Apply(t);
58 59
59 for (size_t j = 1; j < chain.size(); j++) 60 for (size_t j = 1; j < chain.size(); j++)
60 { 61 {
61 ScenePoint2D p = chain[j].Apply(t); 62 ScenePoint2D p = chain[j].Apply(t);
62 63
63 glVertex2f(static_cast<GLfloat>(previous.GetX()), 64 glVertex2f(static_cast<GLfloat>(previous.GetX()),
64 static_cast<GLfloat>(previous.GetY())); 65 static_cast<GLfloat>(previous.GetY()));
65 glVertex2f(static_cast<GLfloat>(p.GetX()), 66 glVertex2f(static_cast<GLfloat>(p.GetX()),
66 static_cast<GLfloat>(p.GetY())); 67 static_cast<GLfloat>(p.GetY()));
67 68
68 previous = p; 69 previous = p;
69 } 70 }
70 71
71 if (layer_.IsClosedChain(i)) 72 if (layer_.IsClosedChain(i))
72 { 73 {
73 ScenePoint2D p = chain[0].Apply(t); 74 ScenePoint2D p = chain[0].Apply(t);
74 75
75 glVertex2f(static_cast<GLfloat>(previous.GetX()), 76 glVertex2f(static_cast<GLfloat>(previous.GetX()),
76 static_cast<GLfloat>(previous.GetY())); 77 static_cast<GLfloat>(previous.GetY()));
77 glVertex2f(static_cast<GLfloat>(p.GetX()), 78 glVertex2f(static_cast<GLfloat>(p.GetX()),
78 static_cast<GLfloat>(p.GetY())); 79 static_cast<GLfloat>(p.GetY()));
80 }
79 } 81 }
80 } 82 }
83
84 glEnd();
81 } 85 }
82
83 glEnd();
84 } 86 }
85 87
86 88
87 void OpenGLBasicPolylineRenderer::Update(const ISceneLayer& layer) 89 void OpenGLBasicPolylineRenderer::Update(const ISceneLayer& layer)
88 { 90 {