Commit 0ba4ba3f authored by Sylvain Thery's avatar Sylvain Thery

update topo3render

parent 020f15a7
...@@ -49,7 +49,7 @@ int main(int argc, char **argv) ...@@ -49,7 +49,7 @@ int main(int argc, char **argv)
// example code itself // example code itself
sqt.createMap(n); sqt.createMap(n);
sqt.width(5); sqt.width(4.0);
// set help message in menu // set help message in menu
sqt.setHelpMsg("First Tuto: \nCreate two faces\nsew them\nand affect positions"); sqt.setHelpMsg("First Tuto: \nCreate two faces\nsew them\nand affect positions");
...@@ -236,14 +236,11 @@ void MyQT::cb_redraw() ...@@ -236,14 +236,11 @@ void MyQT::cb_redraw()
glDepthFunc(GL_LESS); glDepthFunc(GL_LESS);
m_render_topo->drawTopo(); m_render_topo->drawTopo();
glDepthFunc(GL_LEQUAL);
m_render_topo->drawColoredDarts<MAP>(myMap);
if (m_selected != NIL) if (m_selected != NIL)
m_render_topo->overdrawDart(myMap, m_selected, 11, 1.0f, 0.0f, 0.0f); m_render_topo->overdrawDart(myMap, m_selected, 11, 1.0f, 0.0f, 0.0f);
if (m_selected2 != NIL) if (m_selected2 != NIL)
m_render_topo->overdrawDart(myMap, m_selected2, 11, 0.0f, 1.0f, 0.0f);
if(!m_selecteds.empty()) if(!m_selecteds.empty())
{ {
...@@ -251,7 +248,7 @@ void MyQT::cb_redraw() ...@@ -251,7 +248,7 @@ void MyQT::cb_redraw()
m_render_topo->overdrawDart(myMap, *it, 11, 0.0f, 0.0f, 1.0f); m_render_topo->overdrawDart(myMap, *it, 11, 0.0f, 0.0f, 1.0f);
} }
m_render_topo->overdrawDart(myMap, m_selected2, 11, 0.0f, 1.0f, 0.0f);
} }
......
...@@ -61,6 +61,7 @@ int main(int argc, char **argv) ...@@ -61,6 +61,7 @@ int main(int argc, char **argv)
// final show for redraw // final show for redraw
sqt.show(); sqt.show();
// and wait for the end // and wait for the end
sqt.clipping_onoff(true);
return app.exec(); return app.exec();
} }
...@@ -73,21 +74,14 @@ void MyQT::clipping_onoff(bool x) ...@@ -73,21 +74,14 @@ void MyQT::clipping_onoff(bool x)
Geom::Vec3f pos = m_PlanePick->getPosition(); Geom::Vec3f pos = m_PlanePick->getPosition();
float pipo; float pipo;
Geom::Vec3f normal = m_PlanePick->getAxisScale(2, pipo); // 2 = Z axis = plane normal Geom::Vec3f normal = m_PlanePick->getAxisScale(2, pipo); // 2 = Z axis = plane normal
m_sh1->setClipPlaneParamsAll(clip_id1, normal, pos); float d = -(pos*normal);
m_sh2->setClipPlaneParamsAll(clip_id2, normal, pos); m_render_topo->setClippingPlane(Geom::Vec4f(normal[0], normal[1], normal[2], d));
// m_sh3->setClipPlaneParamsAll(clip_id3, normal, pos); m_render_topo_boundary->setClippingPlane(Geom::Vec4f(normal[0], normal[1], normal[2], d));
} }
else else
{ {
m_sh1->setClipPlaneParamsAll(clip_id1, Geom::Vec3f(0,0,1), Geom::Vec3f(0,0,999999.9f)); m_render_topo->setNoClippingPlane();
m_sh2->setClipPlaneParamsAll(clip_id2, Geom::Vec3f(0,0,1), Geom::Vec3f(0,0,999999.9f)); }
// m_sh3->setClipPlaneParamsAll(clip_id3, Geom::Vec3f(0,0,1), Geom::Vec3f(0,0,999999.9f));
m_sh1->setClipColorAttenuationFactorRelative(0.0f,0.0f);
m_sh2->setClipColorAttenuationFactorRelative(0.0f,0.0f);
// m_sh3->setClipColorAttenuationFactorRelative(0.0f,0.0f);
}
updateMap(); updateMap();
updateGL(); updateGL();
} }
...@@ -377,23 +371,6 @@ void MyQT::cb_initGL() ...@@ -377,23 +371,6 @@ void MyQT::cb_initGL()
m_PlanePick = new Utils::Pickable(Utils::Pickable::GRID,1); m_PlanePick = new Utils::Pickable(Utils::Pickable::GRID,1);
m_frame = new Utils::FrameManipulator(); m_frame = new Utils::FrameManipulator();
m_frame->setSize(bb.maxSize()); m_frame->setSize(bb.maxSize());
m_sh1 = static_cast<Utils::ClippingShader*>(m_render_topo->shader1());
m_sh2 = static_cast<Utils::ClippingShader*>(m_render_topo->shader2());
// m_sh3 = static_cast<Utils::ClippingShader*>(m_render_topo_boundary->shader1());
m_sh1->insertClippingCode();
m_sh2->insertClippingCode();
// m_sh3->insertClippingCode();
clip_id1 = m_sh1->addClipPlane();
clip_id2 = m_sh2->addClipPlane();
// clip_id3 = m_sh3->addClipPlane();
m_sh1->setClipPlaneParamsAll(clip_id1, Geom::Vec3f(0,0,1), bb.center());
m_sh2->setClipPlaneParamsAll(clip_id2, Geom::Vec3f(0,0,1), bb.center());
// m_sh3->setClipPlaneParamsAll(clip_id3, Geom::Vec3f(0,0,1), bb.center());
} }
// redraw GL callback (clear and swap already done) // redraw GL callback (clear and swap already done)
...@@ -554,11 +531,9 @@ void MyQT::cb_mouseMove(int buttons, int x, int y) ...@@ -554,11 +531,9 @@ void MyQT::cb_mouseMove(int buttons, int x, int y)
Geom::Vec3f pos = m_PlanePick->getPosition(); Geom::Vec3f pos = m_PlanePick->getPosition();
float pipo; float pipo;
Geom::Vec3f normal = m_PlanePick->getAxisScale(2, pipo); // 2 = Z axis = plane normal Geom::Vec3f normal = m_PlanePick->getAxisScale(2, pipo); // 2 = Z axis = plane normal
float d = -(pos*normal);
m_sh1->setClipPlaneParamsAll(clip_id1, normal, pos); m_render_topo->setClippingPlane(Geom::Vec4f(normal[0], normal[1], normal[2], d));
m_sh2->setClipPlaneParamsAll(clip_id2, normal, pos); m_render_topo_boundary->setClippingPlane(Geom::Vec4f(normal[0], normal[1], normal[2], d));
// m_sh3->setClipPlaneParamsAll(clip_id3, normal, pos);
m_begX = x; m_begX = x;
m_begY = y; m_begY = y;
......
...@@ -133,10 +133,6 @@ protected: ...@@ -133,10 +133,6 @@ protected:
int clip_id2; int clip_id2;
int clip_id3; int clip_id3;
Utils::ClippingShader* m_sh1;
Utils::ClippingShader* m_sh2;
Utils::ClippingShader* m_sh3;
public: public:
// example of simple map creation // example of simple map creation
void createMap(int n); void createMap(int n);
......
...@@ -34,8 +34,11 @@ ...@@ -34,8 +34,11 @@
#include "Geometry/vector_gen.h" #include "Geometry/vector_gen.h"
#include "Utils/GLSLShader.h" #include "Utils/GLSLShader.h"
#include "Utils/Shaders/shaderSimpleColor.h" //#include "Utils/Shaders/shaderSimpleColor.h"
#include "Utils/Shaders/shaderColorPerVertex.h" //#include "Utils/Shaders/shaderColorPerVertex.h"
#include "Utils/Shaders/shaderBoldLines.h"
#include "Utils/Shaders/shaderColorDarts.h"
#include "Utils/Shaders/shaderDarts.h"
#include "Utils/vbo_base.h" #include "Utils/vbo_base.h"
#include "Utils/svg.h" #include "Utils/svg.h"
...@@ -75,8 +78,14 @@ protected: ...@@ -75,8 +78,14 @@ protected:
unsigned int m_vaId; unsigned int m_vaId;
Utils::ShaderSimpleColor* m_shader1; //Utils::ShaderSimpleColor* m_shader1;
Utils::ShaderColorPerVertex* m_shader2; //Utils::ShaderColorPerVertex* m_shader2;
Utils::ShaderBoldLines* m_shader1;
Utils::ShaderColorDarts* m_shader2;
Utils::ShaderDarts* m_shader3;
std::vector<Utils::GLSLShader*> m_shadersVector;
/** /**
*number of darts to draw *number of darts to draw
...@@ -157,6 +166,8 @@ public: ...@@ -157,6 +166,8 @@ public:
Utils::GLSLShader* shader1() { return static_cast<Utils::GLSLShader*>(m_shader1); } Utils::GLSLShader* shader1() { return static_cast<Utils::GLSLShader*>(m_shader1); }
Utils::GLSLShader* shader2() { return static_cast<Utils::GLSLShader*>(m_shader2); } Utils::GLSLShader* shader2() { return static_cast<Utils::GLSLShader*>(m_shader2); }
Utils::GLSLShader* shader3() { return static_cast<Utils::GLSLShader*>(m_shader3); }
const std::vector<Utils::GLSLShader*>& shaders() const { return m_shadersVector; }
void setClippingPlane(const Geom::Vec4f& plane); void setClippingPlane(const Geom::Vec4f& plane);
......
...@@ -71,8 +71,13 @@ Topo3Render<PFP>::Topo3Render(): ...@@ -71,8 +71,13 @@ Topo3Render<PFP>::Topo3Render():
m_vbo3->setDataSize(3); m_vbo3->setDataSize(3);
m_vbo4->setDataSize(3); m_vbo4->setDataSize(3);
m_shader1 = new Utils::ShaderSimpleColor(true,false); m_shader1 = new Utils::ShaderBoldLines();
m_shader2 = new Utils::ShaderColorPerVertex(true,false); m_shader2 = new Utils::ShaderColorDarts();
m_shader3 = new Utils::ShaderDarts();
m_shadersVector.push_back(m_shader1);
m_shadersVector.push_back(m_shader2);
m_shadersVector.push_back(m_shader3);
// binding VBO - VA // binding VBO - VA
m_vaId = m_shader1->setAttributePosition(m_vbo1); m_vaId = m_shader1->setAttributePosition(m_vbo1);
...@@ -80,17 +85,22 @@ Topo3Render<PFP>::Topo3Render(): ...@@ -80,17 +85,22 @@ Topo3Render<PFP>::Topo3Render():
m_shader2->setAttributePosition(m_vbo0); m_shader2->setAttributePosition(m_vbo0);
m_shader2->setAttributeColor(m_vbo4); m_shader2->setAttributeColor(m_vbo4);
m_shader3->setAttributePosition(m_vbo0);
// registering for auto matrices update // registering for auto matrices update
Utils::GLSLShader::registerShader(NULL, m_shader1); Utils::GLSLShader::registerShader(NULL, m_shader1);
Utils::GLSLShader::registerShader(NULL, m_shader2); Utils::GLSLShader::registerShader(NULL, m_shader2);
Utils::GLSLShader::registerShader(NULL, m_shader3);
} }
template<typename PFP> template<typename PFP>
Topo3Render<PFP>::~Topo3Render() Topo3Render<PFP>::~Topo3Render()
{ {
Utils::GLSLShader::unregisterShader(NULL, m_shader3);
Utils::GLSLShader::unregisterShader(NULL, m_shader2); Utils::GLSLShader::unregisterShader(NULL, m_shader2);
Utils::GLSLShader::unregisterShader(NULL, m_shader1); Utils::GLSLShader::unregisterShader(NULL, m_shader1);
delete m_shader3;
delete m_shader2; delete m_shader2;
delete m_shader1; delete m_shader1;
delete m_vbo4; delete m_vbo4;
...@@ -115,6 +125,7 @@ void Topo3Render<PFP>::setClippingPlane(const Geom::Vec4f& plane) ...@@ -115,6 +125,7 @@ void Topo3Render<PFP>::setClippingPlane(const Geom::Vec4f& plane)
{ {
m_shader1->setClippingPlane(plane); m_shader1->setClippingPlane(plane);
m_shader2->setClippingPlane(plane); m_shader2->setClippingPlane(plane);
m_shader3->setClippingPlane(plane);
} }
template<typename PFP> template<typename PFP>
...@@ -175,42 +186,10 @@ void Topo3Render<PFP>::drawDarts() ...@@ -175,42 +186,10 @@ void Topo3Render<PFP>::drawDarts()
if (m_nbDarts==0) if (m_nbDarts==0)
return; return;
m_shader2->setLineWidth(m_topo_dart_width);
m_shader2->enableVertexAttribs(); m_shader2->enableVertexAttribs();
glLineWidth(m_topo_dart_width);
glDrawArrays(GL_LINES, 0, m_nbDarts*2); glDrawArrays(GL_LINES, 0, m_nbDarts*2);
// change the stride to take 1/2 vertices
m_shader2->enableVertexAttribs(6*sizeof(GL_FLOAT));
glPointSize(2.0f*m_topo_dart_width);
glDrawArrays(GL_POINTS, 0, m_nbDarts);
m_shader2->disableVertexAttribs(); m_shader2->disableVertexAttribs();
//
//// glColor3f(1.0f,1.0f,1.0f);
// glLineWidth(m_topo_dart_width);
// glPointSize(2.0f*m_topo_dart_width);
//
// glBindBuffer(GL_ARRAY_BUFFER, m_VBOBuffers[4]);
// glColorPointer(3, GL_FLOAT, 0, 0);
// glEnableClientState(GL_COLOR_ARRAY);
//
// glBindBuffer(GL_ARRAY_BUFFER, m_VBOBuffers[0]);
// glVertexPointer(3, GL_FLOAT, 0, 0);
// glEnableClientState(GL_VERTEX_ARRAY);
// glDrawArrays(GL_LINES, 0, m_nbDarts*2);
//
// glVertexPointer(3, GL_FLOAT, 6*sizeof(GL_FLOAT), 0);
//
// glBindBuffer(GL_ARRAY_BUFFER, m_VBOBuffers[4]);
// glColorPointer(3, GL_FLOAT, 6*sizeof(GL_FLOAT), 0);
// glDrawArrays(GL_POINTS, 0, m_nbDarts)
// ;
// glDisableClientState(GL_COLOR_ARRAY);
// glDisableClientState(GL_VERTEX_ARRAY);
} }
template<typename PFP> template<typename PFP>
...@@ -219,24 +198,12 @@ void Topo3Render<PFP>::drawRelation1() ...@@ -219,24 +198,12 @@ void Topo3Render<PFP>::drawRelation1()
if (m_nbDarts==0) if (m_nbDarts==0)
return; return;
glLineWidth(m_topo_relation_width);
m_shader1->changeVA_VBO(m_vaId, m_vbo1); m_shader1->changeVA_VBO(m_vaId, m_vbo1);
m_shader1->setColor(Geom::Vec4f(0.0f,1.0f,1.0f,0.0f)); m_shader1->setColor(Geom::Vec4f(0.0f,1.0f,1.0f,0.0f));
m_shader1->setLineWidth(m_topo_relation_width);
m_shader1->enableVertexAttribs(); m_shader1->enableVertexAttribs();
glDrawArrays(GL_LINES, 0, m_nbRel1*2); glDrawArrays(GL_LINES, 0, m_nbRel1*2);
m_shader1->disableVertexAttribs(); m_shader1->disableVertexAttribs();
// glLineWidth(m_topo_relation_width);
// glColor3f(0.0f,1.0f,1.0f);
// glBindBuffer(GL_ARRAY_BUFFER, m_VBOBuffers[1]);
// glVertexPointer(3, GL_FLOAT, 0, 0);
//
// glEnableClientState(GL_VERTEX_ARRAY);
// glDrawArrays(GL_LINES, 0, m_nbDarts*2);
// glDisableClientState(GL_VERTEX_ARRAY);
} }
template<typename PFP> template<typename PFP>
...@@ -246,21 +213,11 @@ void Topo3Render<PFP>::drawRelation2() ...@@ -246,21 +213,11 @@ void Topo3Render<PFP>::drawRelation2()
return; return;
m_shader1->changeVA_VBO(m_vaId, m_vbo2); m_shader1->changeVA_VBO(m_vaId, m_vbo2);
m_shader1->setColor(Geom::Vec4f(1.0f,0.0f,0.0f,0.0f)); m_shader1->setColor(Geom::Vec4f(1.0f, 0.0f, 0.0f, 0.0f));
m_shader1->setLineWidth(m_topo_relation_width);
m_shader1->enableVertexAttribs(); m_shader1->enableVertexAttribs();
glDrawArrays(GL_LINES, 0, m_nbRel1 * 2);
glDrawArrays(GL_QUADS, 0, m_nbRel2*4);
m_shader1->disableVertexAttribs(); m_shader1->disableVertexAttribs();
// glLineWidth(m_topo_relation_width);
// glColor3f(1.0f,0.0f,0.0f);
// glBindBuffer(GL_ARRAY_BUFFER, m_VBOBuffers[2]);
// glVertexPointer(3, GL_FLOAT, 0, 0);
//
// glEnableClientState(GL_VERTEX_ARRAY);
// glDrawArrays(GL_QUADS, 0, m_nbRel2*4);
// glDisableClientState(GL_VERTEX_ARRAY);
} }
template<typename PFP> template<typename PFP>
...@@ -271,20 +228,10 @@ void Topo3Render<PFP>::drawRelation3(Geom::Vec4f c) ...@@ -271,20 +228,10 @@ void Topo3Render<PFP>::drawRelation3(Geom::Vec4f c)
m_shader1->changeVA_VBO(m_vaId, m_vbo3); m_shader1->changeVA_VBO(m_vaId, m_vbo3);
m_shader1->setColor(c); m_shader1->setColor(c);
m_shader1->setLineWidth(m_topo_relation_width);
m_shader1->enableVertexAttribs(); m_shader1->enableVertexAttribs();
glDrawArrays(GL_LINES, 0, m_nbRel3 * 2);
glDrawArrays(GL_QUADS, 0, m_nbRel3*4);
m_shader1->disableVertexAttribs(); m_shader1->disableVertexAttribs();
// glLineWidth(m_topo_relation_width);
// glColor3f(1.0f,1.0f,0.0f);
// glBindBuffer(GL_ARRAY_BUFFER, m_VBOBuffers[3]);
// glVertexPointer(3, GL_FLOAT, 0, 0);
//
// glEnableClientState(GL_VERTEX_ARRAY);
// glDrawArrays(GL_QUADS, 0, m_nbRel3*4);
// glDisableClientState(GL_VERTEX_ARRAY);
} }
template<typename PFP> template<typename PFP>
...@@ -301,17 +248,11 @@ void Topo3Render<PFP>::overdrawDart(Dart d, float width, float r, float g, float ...@@ -301,17 +248,11 @@ void Topo3Render<PFP>::overdrawDart(Dart d, float width, float r, float g, float
{ {
unsigned int indexDart = m_attIndex[d]; unsigned int indexDart = m_attIndex[d];
m_shader1->changeVA_VBO(m_vaId, m_vbo0); m_shader3->setColor(Geom::Vec4f(r, g, b, 0.0f));
m_shader1->setColor(Geom::Vec4f(r,g,b,0.0f)); m_shader3->setLineWidth(width);
m_shader1->enableVertexAttribs(); m_shader3->enableVertexAttribs();
glLineWidth(width);
glDrawArrays(GL_LINES, indexDart, 2); glDrawArrays(GL_LINES, indexDart, 2);
m_shader3->disableVertexAttribs();
glPointSize(2.0f*width);
glDrawArrays(GL_POINTS, indexDart, 1);
m_shader2->disableVertexAttribs();
} }
template<typename PFP> template<typename PFP>
...@@ -722,17 +663,17 @@ void Topo3RenderMap<PFP>::updateData(MAP& mapx, const VertexAttribute<VEC3, MAP> ...@@ -722,17 +663,17 @@ void Topo3RenderMap<PFP>::updateData(MAP& mapx, const VertexAttribute<VEC3, MAP>
if ((d < e)) if ((d < e))
{ {
*positionF2++ = PFP::toVec3f(fv2[d]); *positionF2++ = PFP::toVec3f(fv2[d]);
*positionF2++ = PFP::toVec3f(fv2x[e]); // *positionF2++ = PFP::toVec3f(fv2x[e]);
*positionF2++ = PFP::toVec3f(fv2[e]); *positionF2++ = PFP::toVec3f(fv2[e]);
*positionF2++ = PFP::toVec3f(fv2x[d]); // *positionF2++ = PFP::toVec3f(fv2x[d]);
this->m_nbRel2++; this->m_nbRel2++;
} }
e = mapx.phi3(d); e = mapx.phi3(d);
if (!mapx.template isBoundaryMarked<3>(e) && (d < e) ) if (!mapx.template isBoundaryMarked<3>(e) && (d < e) )
{ {
*positionF3++ = PFP::toVec3f(fv2[d]); // *positionF3++ = PFP::toVec3f(fv2[d]);
*positionF3++ = PFP::toVec3f(fv2x[e]); *positionF3++ = PFP::toVec3f(fv2x[e]);
*positionF3++ = PFP::toVec3f(fv2[e]); // *positionF3++ = PFP::toVec3f(fv2[e]);
*positionF3++ = PFP::toVec3f(fv2x[d]); *positionF3++ = PFP::toVec3f(fv2x[d]);
this->m_nbRel3++; this->m_nbRel3++;
} }
...@@ -746,10 +687,10 @@ void Topo3RenderMap<PFP>::updateData(MAP& mapx, const VertexAttribute<VEC3, MAP> ...@@ -746,10 +687,10 @@ void Topo3RenderMap<PFP>::updateData(MAP& mapx, const VertexAttribute<VEC3, MAP>
} }
this->m_vbo3->bind(); this->m_vbo3->bind();
glBufferData(GL_ARRAY_BUFFER, 4*this->m_nbRel3*sizeof(Geom::Vec3f), positioniF3, GL_STREAM_DRAW); glBufferData(GL_ARRAY_BUFFER, 2*this->m_nbRel3*sizeof(Geom::Vec3f), positioniF3, GL_STREAM_DRAW);
this->m_vbo2->bind(); this->m_vbo2->bind();
glBufferData(GL_ARRAY_BUFFER, 4*this->m_nbRel2*sizeof(Geom::Vec3f), positioniF2, GL_STREAM_DRAW); glBufferData(GL_ARRAY_BUFFER, 2*this->m_nbRel2*sizeof(Geom::Vec3f), positioniF2, GL_STREAM_DRAW);
this->m_vbo1->bind(); this->m_vbo1->bind();
glBufferData(GL_ARRAY_BUFFER, 2*this->m_nbRel1*sizeof(Geom::Vec3f), positioniF1, GL_STREAM_DRAW); glBufferData(GL_ARRAY_BUFFER, 2*this->m_nbRel1*sizeof(Geom::Vec3f), positioniF1, GL_STREAM_DRAW);
...@@ -801,10 +742,7 @@ void Topo3RenderGMap<PFP>::updateData(MAP& mapx, const VertexAttribute<VEC3, MAP ...@@ -801,10 +742,7 @@ void Topo3RenderGMap<PFP>::updateData(MAP& mapx, const VertexAttribute<VEC3, MAP
this->m_bufferDartPosition = new Geom::Vec3f[2*this->m_nbDarts]; this->m_bufferDartPosition = new Geom::Vec3f[2*this->m_nbDarts];
Geom::Vec3f* positionDartBuf = reinterpret_cast<Geom::Vec3f*>(this->m_bufferDartPosition); Geom::Vec3f* positionDartBuf = reinterpret_cast<Geom::Vec3f*>(this->m_bufferDartPosition);
// m_vbo0->bind();
// glBufferData(GL_ARRAY_BUFFER, 2*m_nbDarts*sizeof(VEC3), 0, GL_STREAM_DRAW);
// GLvoid* PositionDartsBuffer = glMapBuffer(GL_ARRAY_BUFFER, GL_READ_WRITE);
// VEC3* positionDartBuf = reinterpret_cast<VEC3*>(PositionDartsBuffer);
std::vector<Dart> vecDartFaces; std::vector<Dart> vecDartFaces;
vecDartFaces.reserve(this->m_nbDarts/6); vecDartFaces.reserve(this->m_nbDarts/6);
......
...@@ -40,12 +40,12 @@ namespace Utils ...@@ -40,12 +40,12 @@ namespace Utils
class CGoGN_UTILS_API ShaderPointsLines : public ClippingShader class CGoGN_UTILS_API ShaderPointsLines : public ClippingShader
{ {
public: public:
virtual void setLineWidth(float pix) = 0; virtual void setLineWidth(float) = 0;
virtual void setOpacity(float op) {} virtual void setOpacity(float) {}
virtual unsigned int setAttributePosition(VBO* vbo) = 0; virtual unsigned int setAttributePosition(VBO*) = 0;
virtual unsigned int setAttributeColor(VBO* vbo) { return 0; } virtual unsigned int setAttributeColor(VBO*) { return 0; }
virtual void setColor(const Geom::Vec4f& color) {} virtual void setColor(const Geom::Vec4f&) {}
virtual void setClippingPlane(const Geom::Vec4f& plane) = 0 ; virtual void setClippingPlane(const Geom::Vec4f&) = 0 ;
virtual void setNoClippingPlane() = 0; virtual void setNoClippingPlane() = 0;
}; };
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment