Commit 7e8be952 authored by Pierre Kraemer's avatar Pierre Kraemer

orbit as template -> tutos OK

parent 9b825529
...@@ -47,25 +47,21 @@ int main(int argc, char **argv) ...@@ -47,25 +47,21 @@ int main(int argc, char **argv)
return app.exec(); return app.exec();
} }
void MyQT::createMap() void MyQT::createMap()
{ {
// creation of 2 new faces: 1 triangle and 1 square, sew and embed (see tuto1 for details) // creation of 2 new faces: 1 triangle and 1 square, sew and embed (see tuto1 for details)
Dart d1 = myMap.newFace(3); Dart d1 = myMap.newFace(3);
Dart d2 = myMap.newFace(4); Dart d2 = myMap.newFace(4);
myMap.sewFaces(d1, d2); myMap.sewFaces(d1, d2);
PFP::TVEC3 position = myMap.addAttribute<PFP::VEC3>(VERTEX, "position"); AttributeHandler<VEC3, VERTEX> position = myMap.addAttribute<PFP::VEC3, VERTEX>("position");
position[d1] = PFP::VEC3(0, 0, 0); position[d1] = PFP::VEC3(0, 0, 0);
position[PHI1(d1)] = PFP::VEC3(2, 0, 0); position[PHI1(d1)] = PFP::VEC3(2, 0, 0);
position[PHI_1(d1)] = PFP::VEC3(1, 2, 0); position[PHI_1(d1)] = PFP::VEC3(1, 2, 0);
position[PHI<11>(d2)] = PFP::VEC3(0, -2, 0); position[PHI<11>(d2)] = PFP::VEC3(0, -2, 0);
position[PHI_1(d2)] = PFP::VEC3(2, -2, 0); position[PHI_1(d2)] = PFP::VEC3(2, -2, 0);
// create another attribute on vertices (for faces drawing) // create another attribute on vertices (for faces drawing)
AttributeHandler<Geom::Vec3f> colorF = myMap.addAttribute<PFP::VEC3>(VERTEX, "colorF"); AttributeHandler<VEC3, VERTEX> colorF = myMap.addAttribute<PFP::VEC3, VERTEX>("colorF");
colorF[d1] = Geom::Vec3f(1.0f,0.0f,0.0f); colorF[d1] = Geom::Vec3f(1.0f,0.0f,0.0f);
colorF[PHI1(d1)] = Geom::Vec3f(0.0f,1.0f,0.0f); colorF[PHI1(d1)] = Geom::Vec3f(0.0f,1.0f,0.0f);
...@@ -73,9 +69,8 @@ void MyQT::createMap() ...@@ -73,9 +69,8 @@ void MyQT::createMap()
colorF[PHI<11>(d2)] = Geom::Vec3f(1.0f,0.0f,1.0f); colorF[PHI<11>(d2)] = Geom::Vec3f(1.0f,0.0f,1.0f);
colorF[PHI_1(d2)] = Geom::Vec3f(0.0f,1.0f,1.0f); colorF[PHI_1(d2)] = Geom::Vec3f(0.0f,1.0f,1.0f);
// create another attribute on vertices (for edges drawing) // create another attribute on vertices (for edges drawing)
AttributeHandler<Geom::Vec3f> colorE = myMap.addAttribute<PFP::VEC3>(VERTEX, "colorE"); AttributeHandler<VEC3, VERTEX> colorE = myMap.addAttribute<PFP::VEC3, VERTEX>("colorE");
colorE[d1] = Geom::Vec3f(0.0f,0.5f,0.5f); colorE[d1] = Geom::Vec3f(0.0f,0.5f,0.5f);
colorE[PHI1(d1)] = Geom::Vec3f(0.5f,0.0f,0.5f); colorE[PHI1(d1)] = Geom::Vec3f(0.5f,0.0f,0.5f);
...@@ -83,13 +78,11 @@ void MyQT::createMap() ...@@ -83,13 +78,11 @@ void MyQT::createMap()
colorE[PHI<11>(d2)] = Geom::Vec3f(0.0f,0.5f,0.0f); colorE[PHI<11>(d2)] = Geom::Vec3f(0.0f,0.5f,0.0f);
colorE[PHI_1(d2)] = Geom::Vec3f(0.5f,0.0f,0.0f); colorE[PHI_1(d2)] = Geom::Vec3f(0.5f,0.0f,0.0f);
// example of attribute on face // example of attribute on face
// here for example we store the number of edges of faces at construction // here for example we store the number of edges of faces at construction
AttributeHandler<int> side = myMap.addAttribute<int>(FACE, "nb_sides"); AttributeHandler<int, FACE> side = myMap.addAttribute<int, FACE>("nb_sides");
side[d1]=3; side[d1] = 3;
side[d2]=4; side[d2] = 4;
// bounding box of scene // bounding box of scene
Geom::BoundingBox<PFP::VEC3> bb = Algo::Geometry::computeBoundingBox<PFP>(myMap, position); Geom::BoundingBox<PFP::VEC3> bb = Algo::Geometry::computeBoundingBox<PFP>(myMap, position);
...@@ -102,7 +95,6 @@ void MyQT::createMap() ...@@ -102,7 +95,6 @@ void MyQT::createMap()
// first show for be sure that GL context is binded // first show for be sure that GL context is binded
show(); show();
// update of position VBO (context GL necessary) // update of position VBO (context GL necessary)
m_positionVBO->updateData(position); m_positionVBO->updateData(position);
m_colorVBO1->updateData(colorF); m_colorVBO1->updateData(colorF);
...@@ -113,7 +105,6 @@ void MyQT::createMap() ...@@ -113,7 +105,6 @@ void MyQT::createMap()
m_render->initPrimitives<PFP>(myMap, allDarts, Algo::Render::GL2::LINES); m_render->initPrimitives<PFP>(myMap, allDarts, Algo::Render::GL2::LINES);
m_render->initPrimitives<PFP>(myMap, allDarts, Algo::Render::GL2::POINTS); // special primitive for boundary edges m_render->initPrimitives<PFP>(myMap, allDarts, Algo::Render::GL2::POINTS); // special primitive for boundary edges
// traverse of all dart of the map: // traverse of all dart of the map:
// and write informations // and write informations
for (Dart d = myMap.begin(); d != myMap.end(); myMap.next(d)) for (Dart d = myMap.begin(); d != myMap.end(); myMap.next(d))
...@@ -129,12 +120,8 @@ void MyQT::createMap() ...@@ -129,12 +120,8 @@ void MyQT::createMap()
CGoGNout << " / numer of side of face "<< side[d] << CGoGNendl; CGoGNout << " / numer of side of face "<< side[d] << CGoGNendl;
} }
} }
} }
// initialization GL callback // initialization GL callback
void MyQT::cb_initGL() void MyQT::cb_initGL()
{ {
...@@ -150,7 +137,6 @@ void MyQT::cb_initGL() ...@@ -150,7 +137,6 @@ void MyQT::cb_initGL()
m_colorVBO1 = new Utils::VBO(); m_colorVBO1 = new Utils::VBO();
m_colorVBO2 = new Utils::VBO(); m_colorVBO2 = new Utils::VBO();
// using simple shader with color // using simple shader with color
m_shader = new Utils::ShaderSimpleColor(); m_shader = new Utils::ShaderSimpleColor();
m_shader->setAttributePosition(m_positionVBO); m_shader->setAttributePosition(m_positionVBO);
...@@ -163,8 +149,6 @@ void MyQT::cb_initGL() ...@@ -163,8 +149,6 @@ void MyQT::cb_initGL()
// m_shader2->setAttributeColor(m_colorVBO1); // m_shader2->setAttributeColor(m_colorVBO1);
// each shader must be registred to allow Qt interface to update matrices uniforms // each shader must be registred to allow Qt interface to update matrices uniforms
registerShader(m_shader2); registerShader(m_shader2);
} }
// redraw GL callback (clear and swap already done) // redraw GL callback (clear and swap already done)
...@@ -193,5 +177,3 @@ void MyQT::cb_redraw() ...@@ -193,5 +177,3 @@ void MyQT::cb_redraw()
glDisable(GL_POLYGON_OFFSET_FILL); glDisable(GL_POLYGON_OFFSET_FILL);
} }
...@@ -59,6 +59,9 @@ struct PFP: public PFP_STANDARD ...@@ -59,6 +59,9 @@ struct PFP: public PFP_STANDARD
#endif #endif
}; };
typedef PFP::MAP MAP ;
typedef PFP::VEC3 VEC3 ;
class MyQT: public Utils::QT::SimpleQT class MyQT: public Utils::QT::SimpleQT
{ {
...@@ -71,7 +74,7 @@ public: ...@@ -71,7 +74,7 @@ public:
protected: protected:
// declaration of the map // declaration of the map
PFP::MAP myMap; MAP myMap;
// render (for the topo) // render (for the topo)
// Algo::Render::GL2::TopoRenderMapD* m_render_topo; // Algo::Render::GL2::TopoRenderMapD* m_render_topo;
...@@ -100,6 +103,4 @@ public: ...@@ -100,6 +103,4 @@ public:
void createMap(); void createMap();
}; };
#endif #endif
...@@ -66,11 +66,11 @@ void MyQT::traverseMap() ...@@ -66,11 +66,11 @@ void MyQT::traverseMap()
m1.unmarkAll(); m1.unmarkAll();
m1.markOrbit(VOLUME,xd1); m1.markOrbit<VOLUME>(xd1);
// render the topo of the map without boundary darts // render the topo of the map without boundary darts
SelectorDartNoBoundary<PFP::MAP> nb(myMap); SelectorDartNoBoundary<PFP::MAP> nb(myMap);
m_render_topo->updateData<PFP>(myMap, position, 0.9f, 0.9f,nb); m_render_topo->updateData<PFP>(myMap, position, 0.9f, 0.9f, nb);
for (Dart d = myMap.begin(); d != myMap.end(); myMap.next(d)) for (Dart d = myMap.begin(); d != myMap.end(); myMap.next(d))
{ {
...@@ -143,23 +143,19 @@ void MyQT::traverseMap() ...@@ -143,23 +143,19 @@ void MyQT::traverseMap()
// // markers are cleaned and released at destruction of DartMarkers & CellMarkers // // markers are cleaned and released at destruction of DartMarkers & CellMarkers
// // DartMarkerStore should be used if few darts are traversed // // DartMarkerStore should be used if few darts are traversed
// // DartMarkerNoUnmark can be use if you want to manage unmarking yourself // // DartMarkerNoUnmark can be use if you want to manage unmarking yourself
} }
void MyQT::createMap() void MyQT::createMap()
{ {
// Dart d1 = Algo::Modelisation::createTetrahedron<PFP>(myMap);
// Dart d2 = d1;
Dart d1 = Algo::Modelisation::createTetrahedron<PFP>(myMap); position = myMap.addAttribute<PFP::VEC3, VERTEX>("position");
Dart d2 = d1;
position = myMap.addAttribute<PFP::VEC3>(VERTEX, "position");
Algo::Modelisation::Polyhedron<PFP> prim1(myMap, position); Algo::Modelisation::Polyhedron<PFP> prim1(myMap, position);
prim1.cylinder_topo(256,256, true, true); // topo of sphere is a closed cylinder prim1.cylinder_topo(256, 256, true, true); // topo of sphere is a closed cylinder
prim1.embedSphere(2.0f); prim1.embedSphere(2.0f);
// Dart d2 = d1; // Dart d2 = d1;
...@@ -171,19 +167,17 @@ void MyQT::createMap() ...@@ -171,19 +167,17 @@ void MyQT::createMap()
// d2 = PHI<211>(d2); // d2 = PHI<211>(d2);
// position[d2] = PFP::VEC3(0, 1, 2); // position[d2] = PFP::VEC3(0, 1, 2);
Algo::Modelisation::Polyhedron<PFP> prim2(myMap, position); Algo::Modelisation::Polyhedron<PFP> prim2(myMap, position);
prim2.cylinder_topo(256,256, true, true); // topo of sphere is a closed cylinder prim2.cylinder_topo(256, 256, true, true); // topo of sphere is a closed cylinder
prim2.embedSphere(2.0f); prim2.embedSphere(2.0f);
Geom::Matrix44f trf; Geom::Matrix44f trf;
trf.identity(); trf.identity();
Geom::translate<float>(5.0f,0.0,0.0,trf); Geom::translate<float>(5.0f, 0.0, 0.0, trf);
prim2.transform(trf); prim2.transform(trf);
xd1 = prim2.getDart(); xd1 = prim2.getDart();
// xd1 = Algo::Modelisation::Polyhedron<PFP>::createTetra(myMap); // xd1 = Algo::Modelisation::Polyhedron<PFP>::createTetra(myMap);
// Dart xd2 = xd1; // Dart xd2 = xd1;
// //
...@@ -211,7 +205,6 @@ void MyQT::createMap() ...@@ -211,7 +205,6 @@ void MyQT::createMap()
m_render_topo->updateData<PFP>(myMap, position, 0.9f, 0.9f,nb); m_render_topo->updateData<PFP>(myMap, position, 0.9f, 0.9f,nb);
} }
// initialization GL callback // initialization GL callback
void MyQT::cb_initGL() void MyQT::cb_initGL()
{ {
...@@ -224,7 +217,6 @@ void MyQT::cb_redraw() ...@@ -224,7 +217,6 @@ void MyQT::cb_redraw()
if (dart_selected != NIL) if (dart_selected != NIL)
m_render_topo->overdrawDart(dart_selected, 5, 1.0f,0.0f,0.0f); m_render_topo->overdrawDart(dart_selected, 5, 1.0f,0.0f,0.0f);
m_render_topo->drawTopo(); m_render_topo->drawTopo();
} }
// mouse picking // mouse picking
...@@ -232,12 +224,11 @@ void MyQT::cb_mouseClick(int button, int x, int y) ...@@ -232,12 +224,11 @@ void MyQT::cb_mouseClick(int button, int x, int y)
{ {
if (button == Qt::LeftButton) if (button == Qt::LeftButton)
{ {
Dart d = m_render_topo->picking<PFP>(myMap,x,y); Dart d = m_render_topo->picking<PFP>(myMap, x, y);
if (d != NIL) if (d != NIL)
CGoGNout << "Dart "<< d << CGoGNendl; CGoGNout << "Dart "<< d << CGoGNendl;
dart_selected=d; dart_selected=d;
updateGL(); updateGL();
} }
} }
...@@ -56,6 +56,9 @@ struct PFP: public PFP_STANDARD ...@@ -56,6 +56,9 @@ struct PFP: public PFP_STANDARD
#endif #endif
}; };
typedef PFP::MAP MAP ;
typedef PFP::VEC3 VEC3 ;
class MyQT: public Utils::QT::SimpleQT class MyQT: public Utils::QT::SimpleQT
{ {
...@@ -69,10 +72,10 @@ public: ...@@ -69,10 +72,10 @@ public:
protected: protected:
// declaration of the map // declaration of the map
PFP::MAP myMap; MAP myMap;
// attribute handler on position; // attribute handler on position;
PFP::TVEC3 position; AttributeHandler<VEC3, VERTEX> position;
// render (for the topo) // render (for the topo)
Algo::Render::GL2::TopoRender* m_render_topo; Algo::Render::GL2::TopoRender* m_render_topo;
...@@ -96,6 +99,4 @@ public: ...@@ -96,6 +99,4 @@ public:
void traverseMap(); void traverseMap();
}; };
#endif #endif
...@@ -54,7 +54,6 @@ int main(int argc, char **argv) ...@@ -54,7 +54,6 @@ int main(int argc, char **argv)
return app.exec(); return app.exec();
} }
// example of usage of traversor for local traverse // example of usage of traversor for local traverse
void MyQT::cb_mouseClick(int button, int x, int y) void MyQT::cb_mouseClick(int button, int x, int y)
{ {
...@@ -91,14 +90,12 @@ void MyQT::cb_mouseClick(int button, int x, int y) ...@@ -91,14 +90,12 @@ void MyQT::cb_mouseClick(int button, int x, int y)
dart_selected.push_back(e); dart_selected.push_back(e);
CGoGNout << "traverse vertices adjacent to vertex by a face " << CGoGNendl; CGoGNout << "traverse vertices adjacent to vertex by a face " << CGoGNendl;
color = Geom::Vec3f(1,1,0); color = Geom::Vec3f(1,1,0);
} }
} }
updateGL(); updateGL();
} }
} }
void MyQT::traverseMap() void MyQT::traverseMap()
{ {
//traverse cells with traversor //traverse cells with traversor
...@@ -117,12 +114,8 @@ void MyQT::traverseMap() ...@@ -117,12 +114,8 @@ void MyQT::traverseMap()
TraversorF<PFP::MAP> traF(myMap); TraversorF<PFP::MAP> traF(myMap);
for (Dart d=traF.begin(); d!=traF.end(); d=traF.next()) for (Dart d=traF.begin(); d!=traF.end(); d=traF.next())
CGoGNout << "Face of dart "<<d<< CGoGNendl; CGoGNout << "Face of dart "<<d<< CGoGNendl;
} }
void MyQT::createMap() void MyQT::createMap()
{ {
...@@ -130,7 +123,7 @@ void MyQT::createMap() ...@@ -130,7 +123,7 @@ void MyQT::createMap()
Dart d2 = d1; Dart d2 = d1;
position = myMap.addAttribute<PFP::VEC3>(VERTEX, "position"); position = myMap.addAttribute<PFP::VEC3, VERTEX>("position");
position[d2] = PFP::VEC3(1, 0, 0); position[d2] = PFP::VEC3(1, 0, 0);
d2 = PHI1(d2); d2 = PHI1(d2);
...@@ -161,7 +154,6 @@ void MyQT::createMap() ...@@ -161,7 +154,6 @@ void MyQT::createMap()
m_render_topo->updateData<PFP>(myMap, position, 0.9f, 0.9f); m_render_topo->updateData<PFP>(myMap, position, 0.9f, 0.9f);
} }
// initialization GL callback // initialization GL callback
void MyQT::cb_initGL() void MyQT::cb_initGL()
{ {
...@@ -177,10 +169,4 @@ void MyQT::cb_redraw() ...@@ -177,10 +169,4 @@ void MyQT::cb_redraw()
m_render_topo->overdrawDart(*it, 5, color[0],color[1],color[2]); m_render_topo->overdrawDart(*it, 5, color[0],color[1],color[2]);
} }
m_render_topo->drawTopo(); m_render_topo->drawTopo();
} }
...@@ -44,6 +44,9 @@ struct PFP: public PFP_STANDARD ...@@ -44,6 +44,9 @@ struct PFP: public PFP_STANDARD
typedef EmbeddedMap2 MAP; typedef EmbeddedMap2 MAP;
}; };
typedef PFP::MAP MAP ;
typedef PFP::VEC3 VEC3 ;
class MyQT: public Utils::QT::SimpleQT class MyQT: public Utils::QT::SimpleQT
{ {
...@@ -57,10 +60,10 @@ public: ...@@ -57,10 +60,10 @@ public:
protected: protected:
// declaration of the map // declaration of the map
PFP::MAP myMap; MAP myMap;
// attribute handler on position; // attribute handler on position;
PFP::TVEC3 position; AttributeHandler<VEC3, VERTEX> position;
// render (for the topo) // render (for the topo)
Algo::Render::GL2::TopoRender* m_render_topo; Algo::Render::GL2::TopoRender* m_render_topo;
......
...@@ -22,11 +22,9 @@ ...@@ -22,11 +22,9 @@
* * * *
*******************************************************************************/ *******************************************************************************/
#include "tuto5.h" #include "tuto5.h"
#include <iostream> #include <iostream>
#include "Algo/Modelisation/primitives3d.h" #include "Algo/Modelisation/primitives3d.h"
#include "Algo/Modelisation/polyhedron.h" #include "Algo/Modelisation/polyhedron.h"
#include "Algo/Modelisation/subdivision.h" #include "Algo/Modelisation/subdivision.h"
...@@ -36,8 +34,8 @@ ...@@ -36,8 +34,8 @@
#include "Algo/Render/SVG/mapSVGRender.h" #include "Algo/Render/SVG/mapSVGRender.h"
PFP::MAP myMap; MAP myMap;
PFP::TVEC3 position ; AttributeHandler<VEC3, VERTEX> position ;
Dart dglobal; Dart dglobal;
void MyQT::balls_onoff(bool x) void MyQT::balls_onoff(bool x)
...@@ -87,8 +85,6 @@ void MyQT::slider_text(int x) ...@@ -87,8 +85,6 @@ void MyQT::slider_text(int x)
updateGL(); updateGL();
} }
void MyQT::animate() void MyQT::animate()
{ {
// transfoMatrix() = glm::rotate(transfoMatrix(), 0.5f, glm::vec3(0.5773f,0.5773f,0.5773f)); // transfoMatrix() = glm::rotate(transfoMatrix(), 0.5f, glm::vec3(0.5773f,0.5773f,0.5773f));
...@@ -97,19 +93,17 @@ void MyQT::animate() ...@@ -97,19 +93,17 @@ void MyQT::animate()
updateGL(); updateGL();
} }
void MyQT::storeVerticesInfo() void MyQT::storeVerticesInfo()
{ {
CellMarker<VERTEX> mv(myMap);
CellMarker mv(myMap,VERTEX); for (Dart d = myMap.begin(); d != myMap.end(); myMap.next(d))
for (Dart d=myMap.begin(); d!=myMap.end(); myMap.next(d))
{ {
if (!mv.isMarked(d)) if (!mv.isMarked(d))
{ {
mv.mark(d); mv.mark(d);
std::stringstream ss; std::stringstream ss;
ss << d << " : "<< position[d]; ss << d << " : "<< position[d];
m_strings->addString(ss.str(),position[d]); m_strings->addString(ss.str(), position[d]);
} }
} }
} }
...@@ -171,7 +165,6 @@ void MyQT::cb_initGL() ...@@ -171,7 +165,6 @@ void MyQT::cb_initGL()
SelectorDartNoBoundary<PFP::MAP> nb(myMap); SelectorDartNoBoundary<PFP::MAP> nb(myMap);
m_render_topo->updateData<PFP>(myMap, position, 0.9f, 0.9f, 0.9f, nb); m_render_topo->updateData<PFP>(myMap, position, 0.9f, 0.9f, 0.9f, nb);
// timer example for animation // timer example for animation
m_timer = new QTimer( this ); m_timer = new QTimer( this );
connect( m_timer, SIGNAL(timeout()), SLOT(animate()) ); connect( m_timer, SIGNAL(timeout()), SLOT(animate()) );
...@@ -201,7 +194,6 @@ void MyQT::cb_redraw() ...@@ -201,7 +194,6 @@ void MyQT::cb_redraw()
*/ */
m_render_topo->overdrawDart(m_selected, 5, 1.0f, 0.0f, 1.0f); m_render_topo->overdrawDart(m_selected, 5, 1.0f, 0.0f, 1.0f);
glDisable(GL_POLYGON_OFFSET_FILL); glDisable(GL_POLYGON_OFFSET_FILL);
if (render_text) if (render_text)
...@@ -245,13 +237,13 @@ void MyQT::cb_keyPress(int code) ...@@ -245,13 +237,13 @@ void MyQT::cb_keyPress(int code)
if (code == 's') if (code == 's')
{ {
std::string filename = selectFileSave("Export SVG file ",".","(*.svg)"); std::string filename = selectFileSave("Export SVG file ",".","(*.svg)");
Utils::SVG::SVGOut svg(filename,modelViewMatrix(),projectionMatrix()); Utils::SVG::SVGOut svg(filename, modelViewMatrix(), projectionMatrix());
svg.setWidth(1.0f); svg.setWidth(1.0f);
svg.setColor(Geom::Vec3f(0.0f,0.0f,0.5f)); svg.setColor(Geom::Vec3f(0.0f,0.0f,0.5f));
Algo::Render::SVG::renderEdges<PFP>(svg,myMap,position); Algo::Render::SVG::renderEdges<PFP>(svg, myMap, position);
svg.setColor(Geom::Vec3f(0.0f,0.8f,0.0f)); svg.setColor(Geom::Vec3f(0.0f,0.8f,0.0f));
svg.setWidth(5.0f); svg.setWidth(5.0f);
Algo::Render::SVG::renderVertices<PFP>(svg,myMap,position); Algo::Render::SVG::renderVertices<PFP>(svg, myMap, position);
svg.setColor(Geom::Vec3f(1.0f,0.0f,0.0f)); svg.setColor(Geom::Vec3f(1.0f,0.0f,0.0f));
m_strings->toSVG(svg); m_strings->toSVG(svg);
//svg destruction close the file //svg destruction close the file
...@@ -274,20 +266,16 @@ void MyQT::cb_keyPress(int code) ...@@ -274,20 +266,16 @@ void MyQT::cb_keyPress(int code)
m_render->initPrimitives<PFP>(myMap, allDarts, Algo::Render::GL2::LINES); m_render->initPrimitives<PFP>(myMap, allDarts, Algo::Render::GL2::LINES);
m_render->initPrimitives<PFP>(myMap, allDarts, Algo::Render::GL2::POINTS); m_render->initPrimitives<PFP>(myMap, allDarts, Algo::Render::GL2::POINTS);