Commit 0cc54bd5 authored by Pierre Kraemer's avatar Pierre Kraemer
Browse files

everything seems OK for now..

parent 57a22f4b
...@@ -39,6 +39,8 @@ ...@@ -39,6 +39,8 @@
#include "Algo/Modelisation/polyhedron.h" #include "Algo/Modelisation/polyhedron.h"
#include "Algo/Modelisation/subdivision.h" #include "Algo/Modelisation/subdivision.h"
#include "Algo/Render/GL1/map_glRender.h"
#include "Algo/Render/GL1/topo_render.h"
#include "Algo/Render/GL2/topo3Render.h" #include "Algo/Render/GL2/topo3Render.h"
#include "Topology/generic/cellmarker.h" #include "Topology/generic/cellmarker.h"
...@@ -63,27 +65,26 @@ PFP::MAP myMap; ...@@ -63,27 +65,26 @@ PFP::MAP myMap;
PFP::TVEC3 position ; PFP::TVEC3 position ;
Dart dglobal; Dart dglobal;
void MyQT::balls_onoff(bool x) //void MyQT::balls_onoff(bool x)
{ //{
render_balls = !render_balls; // render_balls = !render_balls;
updateGL(); // updateGL();
CGoGNerr << " balls_onoff "<< CGoGNendl; // CGoGNerr << " balls_onoff "<< CGoGNendl;
} //}
//
void MyQT::vectors_onoff(bool x) //void MyQT::vectors_onoff(bool x)
{ //{
render_vectors = !render_vectors; // render_vectors = !render_vectors;
updateGL(); // updateGL();
CGoGNerr << " vectors_onoff "<< CGoGNflush; // CGoGNerr << " vectors_onoff "<< CGoGNflush;
} //}
//
void MyQT::text_onoff(bool x) //void MyQT::text_onoff(bool x)
{ //{
render_text = !render_text; // render_text = !render_text;
updateGL(); // updateGL();
CGoGNerr << " text_onoff " << CGoGNflush; // CGoGNerr << " text_onoff " << CGoGNflush;
} //}
void MyQT::topo_onoff(bool x) void MyQT::topo_onoff(bool x)
{ {
...@@ -92,25 +93,23 @@ void MyQT::topo_onoff(bool x) ...@@ -92,25 +93,23 @@ void MyQT::topo_onoff(bool x)
CGoGNerr << " topo_onoff " << CGoGNflush; CGoGNerr << " topo_onoff " << CGoGNflush;
} }
void MyQT::slider_balls(int x) //void MyQT::slider_balls(int x)
{ //{
m_sprite->setSize(0.05f*x); // m_sprite->setSize(0.05f*x);
updateGL(); // updateGL();
} //}
//
void MyQT::slider_vectors(int x) //void MyQT::slider_vectors(int x)
{ //{
m_lines->setScale(0.02*x); // m_lines->setScale(0.02*x);
updateGL(); // updateGL();
} //}
//
void MyQT::slider_text(int x) //void MyQT::slider_text(int x)
{ //{
m_strings->setScale(0.02f*x); // m_strings->setScale(0.02f*x);
updateGL(); // updateGL();
} //}
void MyQT::animate() void MyQT::animate()
{ {
...@@ -119,77 +118,76 @@ void MyQT::animate() ...@@ -119,77 +118,76 @@ void MyQT::animate()
updateGLMatrices(); updateGLMatrices();
} }
//void MyQT::storeVerticesInfo()
void MyQT::storeVerticesInfo() //{
{ //
// CellMarker mv(myMap,VERTEX);
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]); // }
} // }
} //}
}
void MyQT::cb_initGL() void MyQT::cb_initGL()
{ {
// choose to use GL version 2 // choose to use GL version 2
Utils::GLSLShader::setCurrentOGLVersion(2); // Utils::GLSLShader::setCurrentOGLVersion(2);
Utils::GLSLShader::setCurrentOGLVersion(1) ;
// create the render
m_render = new Algo::Render::GL2::MapRender();
m_render_topo = new Algo::Render::GL2::Topo3RenderMapD();
// create VBO for position
m_positionVBO = new Utils::VBO();
m_positionVBO->updateData(position);
// using simple shader with color
m_shader = new Utils::ShaderSimpleColor();
m_shader->setAttributePosition(m_positionVBO);
m_shader->setColor(Geom::Vec4f(0.,1.,0.,0.));
m_sprite = new Utils::PointSprite();
m_sprite->setAttributePosition(m_positionVBO);
m_strings = new Utils::Strings3D(true, Geom::Vec3f(0.1f,0.0f,0.3f));
storeVerticesInfo();
m_strings->sendToVBO();
// copy de contenu de VBO a la creation
m_dataVBO = new Utils::VBO(*m_positionVBO);
m_lines = new Utils::ShaderVectorPerVertex();
m_lines->setAttributePosition(m_positionVBO);
m_lines->setAttributeVector(m_dataVBO);
m_lines->setScale(0.2f);
m_lines->setColor(Geom::Vec4f(0.0f, 1.0f, 0.2f, 0.0f));
// accede au buffer du VBO pour modification
PFP::VEC3* data = static_cast<PFP::VEC3*>(m_dataVBO->lockPtr());
for (unsigned int i=0; i< m_dataVBO->nbElts(); ++i)
{
data[i].normalize();
}
m_dataVBO->releasePtr();
registerShader(m_shader);
registerShader(m_strings);
registerShader(m_sprite);
registerShader(m_lines);
m_render->initPrimitives<PFP>(myMap, allDarts, Algo::Render::GL2::TRIANGLES);
m_render->initPrimitives<PFP>(myMap, allDarts, Algo::Render::GL2::LINES);
m_render->initPrimitives<PFP>(myMap, allDarts, Algo::Render::GL2::POINTS);
m_render_topo->updateData<PFP>(myMap, allDarts, position, 0.9f, 0.9f, 0.9f);
// // create the render
// m_render = new Algo::Render::GL2::MapRender();
//
// m_render_topo = new Algo::Render::GL2::Topo3RenderMapD();
//
// // create VBO for position
// m_positionVBO = new Utils::VBO();
// m_positionVBO->updateData(position);
//
// // using simple shader with color
// m_shader = new Utils::ShaderSimpleColor();
// m_shader->setAttributePosition(m_positionVBO);
// m_shader->setColor(Geom::Vec4f(0.,1.,0.,0.));
//
// m_sprite = new Utils::PointSprite();
// m_sprite->setAttributePosition(m_positionVBO);
//
// m_strings = new Utils::Strings3D(true, Geom::Vec3f(0.1f,0.0f,0.3f));
// storeVerticesInfo();
// m_strings->sendToVBO();
//
// // copy de contenu de VBO a la creation
// m_dataVBO = new Utils::VBO(*m_positionVBO);
//
// m_lines = new Utils::ShaderVectorPerVertex();
// m_lines->setAttributePosition(m_positionVBO);
// m_lines->setAttributeVector(m_dataVBO);
// m_lines->setScale(0.2f);
// m_lines->setColor(Geom::Vec4f(0.0f, 1.0f, 0.2f, 0.0f));
//
// // accede au buffer du VBO pour modification
// PFP::VEC3* data = static_cast<PFP::VEC3*>(m_dataVBO->lockPtr());
// for (unsigned int i=0; i< m_dataVBO->nbElts(); ++i)
// {
// data[i].normalize();
// }
// m_dataVBO->releasePtr();
//
// registerShader(m_shader);
// registerShader(m_strings);
// registerShader(m_sprite);
// registerShader(m_lines);
//
// m_render->initPrimitives<PFP>(myMap, allDarts, Algo::Render::GL2::TRIANGLES);
// m_render->initPrimitives<PFP>(myMap, allDarts, Algo::Render::GL2::LINES);
// m_render->initPrimitives<PFP>(myMap, allDarts, Algo::Render::GL2::POINTS);
//
// m_render_topo->updateData<PFP>(myMap, allDarts, position, 0.9f, 0.9f, 0.9f);
// timer example for animation // timer example for animation
m_timer = new QTimer( this ); m_timer = new QTimer( this );
...@@ -198,73 +196,79 @@ void MyQT::cb_initGL() ...@@ -198,73 +196,79 @@ void MyQT::cb_initGL()
void MyQT::cb_redraw() void MyQT::cb_redraw()
{ {
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); // glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
glEnable(GL_LIGHTING); // glEnable(GL_LIGHTING);
//
m_render->draw(m_shader, Algo::Render::GL2::POINTS); // m_render->draw(m_shader, Algo::Render::GL2::POINTS);
//
glLineWidth(2.0f); // glLineWidth(2.0f);
m_shader->setColor(Geom::Vec4f(1.,1.,0.,0.)); // m_shader->setColor(Geom::Vec4f(1.,1.,0.,0.));
m_render->draw(m_shader, Algo::Render::GL2::LINES); // m_render->draw(m_shader, Algo::Render::GL2::LINES);
//
glEnable(GL_POLYGON_OFFSET_FILL); // glEnable(GL_POLYGON_OFFSET_FILL);
glPolygonOffset(1.0f, 1.0f); // glPolygonOffset(1.0f, 1.0f);
if (render_topo) if (render_topo)
m_render_topo->drawTopo();
Dart d = myMap.phi2(myMap.begin());
m_render_topo->overdrawDart(d, 5, 1.0f, 0.0f, 1.0f);
d = myMap.phi1(myMap.begin());
m_render_topo->overdrawDart(d, 5, 1.0f, 0.0f, 1.0f);
glDisable(GL_POLYGON_OFFSET_FILL);
if (render_text)
m_strings->drawAll(Geom::Vec3f(0.0f, 1.0f, 1.0f));
if (render_balls)
{
m_sprite->predraw(Geom::Vec3f(1.0f, 0.0f ,0.0f));
m_render->draw(m_sprite, Algo::Render::GL2::POINTS);
m_sprite->postdraw();
}
if (render_vectors)
{ {
glDisable(GL_LIGHTING);
glLineWidth(1.0f); glLineWidth(1.0f);
m_render->draw(m_lines, Algo::Render::GL2::POINTS); // Algo::Render::GL1::renderTopoGMD3<PFP>(myMap, position, true, true, true, true, 0.9f, 0.9f, 0.9f, 0.9f);
Algo::Render::GL1::renderTopoMD3<PFP>(myMap, position, true, true, true, 0.9f, 0.9f, 0.9f);
// m_render_topo->drawTopo();
} }
// Dart d = myMap.phi2(myMap.begin());
// m_render_topo->overdrawDart(d, 5, 1.0f, 0.0f, 1.0f);
// d = myMap.phi1(myMap.begin());
// m_render_topo->overdrawDart(d, 5, 1.0f, 0.0f, 1.0f);
//
// glDisable(GL_POLYGON_OFFSET_FILL);
//
// if (render_text)
// m_strings->drawAll(Geom::Vec3f(0.0f, 1.0f, 1.0f));
//
// if (render_balls)
// {
// m_sprite->predraw(Geom::Vec3f(1.0f, 0.0f ,0.0f));
// m_render->draw(m_sprite, Algo::Render::GL2::POINTS);
// m_sprite->postdraw();
// }
//
// if (render_vectors)
// {
// glLineWidth(1.0f);
// m_render->draw(m_lines, Algo::Render::GL2::POINTS);
// }
} }
void MyQT::cb_mousePress(int button, int x, int y) void MyQT::cb_mousePress(int button, int x, int y)
{ {
if (Shift()) // if (Shift())
{ // {
Dart d = m_render_topo->picking<PFP>(myMap, allDarts, x,y); // Dart d = m_render_topo->picking<PFP>(myMap, allDarts, x,y);
if (d != Dart::nil()) // if (d != Dart::nil())
{ // {
CGoGNout << "Dart "<< d << " clicked" << CGoGNendl; // CGoGNout << "Dart "<< d << " clicked" << CGoGNendl;
} // }
else // else
{ // {
statusMsg(""); // statusMsg("");
} // }
} // }
} }
void MyQT::cb_keyPress(int code) void MyQT::cb_keyPress(int code)
{ {
if (code == 's') // if (code == 's')
{ // {
std::string filename = selectFileSave("Export SVG file "); // std::string filename = selectFileSave("Export SVG file ");
CGoGNout << "Exporting "<<filename<<CGoGNendl; // CGoGNout << "Exporting "<< filename << CGoGNendl;
Algo::Render::SVG::SVGOut svg(filename,modelViewMatrix(),projectionMatrix()); // Algo::Render::SVG::SVGOut svg(filename, modelViewMatrix(), projectionMatrix());
// svg.renderLinesToSVG<PFP>(myMap,position); //// svg.renderLinesToSVG<PFP>(myMap,position);
svg.setColor(Geom::Vec3f(1.,0.,0.)); // svg.setColor(Geom::Vec3f(1.,0.,0.));
svg.renderFacesToSVG<PFP>(myMap,position,0.8f); // svg.renderFacesToSVG<PFP>(myMap,position,0.8f);
//svg destruction close the file // //svg destruction close the file
} // }
if (code == 't') if (code == 't')
{ {
if (m_timer->isActive()) if (m_timer->isActive())
...@@ -274,7 +278,7 @@ void MyQT::cb_keyPress(int code) ...@@ -274,7 +278,7 @@ void MyQT::cb_keyPress(int code)
} }
} }
Dart embedCube() Dart embedCube1()
{ {
Dart d = Algo::Modelisation::Polyhedron<PFP>::createPolyhedron(myMap,6); Dart d = Algo::Modelisation::Polyhedron<PFP>::createPolyhedron(myMap,6);
...@@ -317,7 +321,7 @@ Dart embedCube2() ...@@ -317,7 +321,7 @@ Dart embedCube2()
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
position = myMap.addAttribute<PFP::VEC3>(VERTEX, "position"); position = myMap.addAttribute<PFP::VEC3>(VERTEX, "position");
Dart d1 = embedCube() ; Dart d1 = embedCube1() ;
Dart d2 = embedCube2() ; Dart d2 = embedCube2() ;
Dart dd = myMap.phi2(d1) ; Dart dd = myMap.phi2(d1) ;
...@@ -365,6 +369,7 @@ int main(int argc, char **argv) ...@@ -365,6 +369,7 @@ int main(int argc, char **argv)
myMap.check() ; myMap.check() ;
std::cout << "nb darts -> " << myMap.getNbDarts() << std::endl ; std::cout << "nb darts -> " << myMap.getNbDarts() << std::endl ;
std::cout << "nb darts -> " << myMap.getNbDarts() << std::endl ;
PFP::VEC3 p = position[f] + position[myMap.phi_1(f)] ; PFP::VEC3 p = position[f] + position[myMap.phi_1(f)] ;
p /= 2.0 ; p /= 2.0 ;
...@@ -385,14 +390,6 @@ int main(int argc, char **argv) ...@@ -385,14 +390,6 @@ int main(int argc, char **argv)
std::cout << "nb darts -> " << myMap.getNbDarts() << std::endl ; std::cout << "nb darts -> " << myMap.getNbDarts() << std::endl ;
// Algo::Modelisation::Primitive3D<PFP> prim(myMap, position); // Algo::Modelisation::Primitive3D<PFP> prim(myMap, position);
//
// int nb=3;
// if (argc>1)
// nb = atoi(argv[1]);
// dglobal = prim.hexaGrid_topo(nb,nb,nb);
// prim.embedHexaGrid(1.0f,1.0f,1.0f);
//
// myMap.closeMap();
// un peu d'interface // un peu d'interface
QApplication app(argc, argv); QApplication app(argc, argv);
...@@ -402,17 +399,17 @@ int main(int argc, char **argv) ...@@ -402,17 +399,17 @@ int main(int argc, char **argv)
Utils::QT::uiDockInterface dock; Utils::QT::uiDockInterface dock;
sqt.setDock(&dock); sqt.setDock(&dock);
// message d'aide // // message d'aide
sqt.setHelpMsg("Enter pour dock on/off\nShift Enter pour console on/off\nShift Click gauche pour selectionner un brin"); // sqt.setHelpMsg("Enter pour dock on/off\nShift Enter pour console on/off\nShift Click gauche pour selectionner un brin");
//
CGoGNout.toStatusBar(&sqt); // CGoGNout.toStatusBar(&sqt);
CGoGNout << "CGoGNOut StatusBar" << Geom::Vec3f(2.5f, 2.2f, 4.3f) << CGoGNendl; // CGoGNout << "CGoGNOut StatusBar" << Geom::Vec3f(2.5f, 2.2f, 4.3f) << CGoGNendl;
//
CGoGNout.toConsole(&sqt); // CGoGNout.toConsole(&sqt);
//
CGoGNout << "CGoGNOut dans la console" << Geom::Vec3f(2.5f, 2.2f, 4.3f) << CGoGNendl; // CGoGNout << "CGoGNOut dans la console" << Geom::Vec3f(2.5f, 2.2f, 4.3f) << CGoGNendl;
//
CGoGNout.toStatusBar(NULL); // CGoGNout.toStatusBar(NULL);
// bounding box // bounding box
Geom::BoundingBox<PFP::VEC3> bb = Algo::Geometry::computeBoundingBox<PFP>(myMap, position); Geom::BoundingBox<PFP::VEC3> bb = Algo::Geometry::computeBoundingBox<PFP>(myMap, position);
...@@ -422,29 +419,27 @@ int main(int argc, char **argv) ...@@ -422,29 +419,27 @@ int main(int argc, char **argv)
// envoit info BB a l'interface // envoit info BB a l'interface
sqt.setParamObject(lWidthObj, lPosObj.data()); sqt.setParamObject(lWidthObj, lPosObj.data());
sqt.setCallBack( dock.checkBox_balls, SIGNAL(toggled(bool)), SLOT(balls_onoff(bool)) ); // sqt.setCallBack( dock.checkBox_balls, SIGNAL(toggled(bool)), SLOT(balls_onoff(bool)) );
sqt.setCallBack( dock.checkBox_vectors, SIGNAL(toggled(bool)), SLOT(vectors_onoff(bool)) ); // sqt.setCallBack( dock.checkBox_vectors, SIGNAL(toggled(bool)), SLOT(vectors_onoff(bool)) );
sqt.setCallBack( dock.checkBox_text, SIGNAL(toggled(bool)), SLOT(text_onoff(bool)) ); // sqt.setCallBack( dock.checkBox_text, SIGNAL(toggled(bool)), SLOT(text_onoff(bool)) );
sqt.setCallBack( dock.checkBox_topo, SIGNAL(toggled(bool)), SLOT(topo_onoff(bool)) ); sqt.setCallBack( dock.checkBox_topo, SIGNAL(toggled(bool)), SLOT(topo_onoff(bool)) );
sqt.setCallBack( dock.slider_balls, SIGNAL(valueChanged(int)), SLOT(slider_balls(int)) ); // sqt.setCallBack( dock.slider_balls, SIGNAL(valueChanged(int)), SLOT(slider_balls(int)) );
sqt.setCallBack( dock.slider_vectors, SIGNAL(valueChanged(int)), SLOT(slider_vectors(int)) ); // sqt.setCallBack( dock.slider_vectors, SIGNAL(valueChanged(int)), SLOT(slider_vectors(int)) );
sqt.setCallBack( dock.slider_text, SIGNAL(valueChanged(int)), SLOT(slider_text(int)) ); // sqt.setCallBack( dock.slider_text, SIGNAL(valueChanged(int)), SLOT(slider_text(int)) );
sqt.show(); sqt.show();
sqt.slider_balls(50); // sqt.slider_balls(50);
sqt.slider_vectors(50); // sqt.slider_vectors(50);
sqt.slider_text(50); // sqt.slider_text(50);
GLint texSize;
glGetIntegerv(GL_MAX_TEXTURE_SIZE, &texSize);
CGoGNdbg.toConsole(&sqt);
CGoGNerr.toConsole(&sqt);
CGoGNdbg << " TextureSize " << texSize << CGoGNendl;
CGoGNerr << " test ERROR " << 5*7 << CGoGNflush;
// GLint texSize;
// glGetIntegerv(GL_MAX_TEXTURE_SIZE, &texSize);
// CGoGNdbg.toConsole(&sqt);
// CGoGNerr.toConsole(&sqt);
// CGoGNdbg << " TextureSize " << texSize << CGoGNendl;
// CGoGNerr << " test ERROR " << 5*7 << CGoGNflush;
// et on attend la fin. // et on attend la fin.
return app.exec(); return app.exec();
......
...@@ -61,38 +61,38 @@ class MyQT: public Utils::QT::SimpleQT ...@@ -61,38 +61,38 @@ class MyQT: public Utils::QT::SimpleQT
bool render_vectors; bool render_vectors;
bool render_topo; bool render_topo;
Algo::Render::GL2::MapRender* m_render; // Algo::Render::GL2::MapRender* m_render;
Algo::Render::GL2::Topo3RenderMapD* m_render_topo; // Algo::Render::GL2::Topo3RenderMapD* m_render_topo;
//
// Utils::VBO* m_positionVBO;
// Utils::VBO* m_dataVBO;
Utils::VBO* m_positionVBO; // Utils::ShaderSimpleColor* m_shader;
Utils::VBO* m_dataVBO; // Utils::ShaderVectorPerVertex* m_lines;
// Utils::Strings3D* m_strings;
Utils::ShaderSimpleColor* m_shader; // Utils::PointSprite* m_sprite;
Utils::ShaderVectorPerVertex* m_lines;
Utils::Strings3D* m_strings;
Utils::PointSprite* m_sprite;
QTimer *m_timer; QTimer *m_timer;
public: public:
MyQT(): MyQT():
render_text(true), render_text(false),
render_balls(true), render_balls(false),
render_vectors(true), render_vectors(false),
render_topo(true), render_topo(true),
m_render(NULL), // m_render(NULL),
m_render_topo(NULL), // m_render_topo(NULL),
m_positionVBO(NULL), // m_positionVBO(NULL),
m_dataVBO(NULL), // m_dataVBO(NULL),
m_shader(NULL), // m_shader(NULL),
m_lines(NULL), // m_lines(NULL),
m_strings(NULL), // m_strings(NULL),
m_sprite(NULL), // m_sprite(NULL),
m_timer(NULL) m_timer(NULL)
{} {}
protected: protected:
void storeVerticesInfo(); // void storeVerticesInfo();
void cb_redraw(); void cb_redraw();
...@@ -104,14 +104,14 @@ protected: ...@@ -104,14 +104,14 @@ protected:
// slots locaux // slots locaux
public slots: public slots:
void balls_onoff(bool x); // void balls_onoff(bool x);
void vectors_onoff(bool x); // void vectors_onoff(bool x);
void text_onoff(bool x); // void text_onoff(bool x);
void topo_onoff(bool x); void topo_onoff(bool x);
void slider_balls(int x); // void slider_balls(int x);
void slider_vectors(int x); // void slider_vectors(int x);
void slider_text(int x); // void slider_text(int x);