mirror of https://github.com/CGAL/cgal
Merge pull request #1323 from maxGimeno/Polyhedron_demo-Add_shaded_points-GF
Polyhedron_demo : Add a new RenderingMode for ShadedPoints
This commit is contained in:
commit
df77ac7812
|
|
@ -41,7 +41,7 @@ public:
|
|||
QString toolTip() const;
|
||||
|
||||
// Indicate if rendering mode is supported
|
||||
virtual bool supportsRenderingMode(RenderingMode m) const { return (m != Gouraud && m!=PointsPlusNormals && m!=Splatting); } // CHECK THIS!
|
||||
virtual bool supportsRenderingMode(RenderingMode m) const { return (m != Gouraud && m!=PointsPlusNormals && m!=Splatting && m!=ShadedPoints); } // CHECK THIS!
|
||||
//Event handling
|
||||
virtual bool keyPressEvent(QKeyEvent*);
|
||||
//drawing of the scene
|
||||
|
|
|
|||
|
|
@ -482,7 +482,8 @@ Scene::draw_aux(bool with_names, CGAL::Three::Viewer_interface* viewer)
|
|||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||
}
|
||||
if(item.renderingMode() == Points ||
|
||||
(!with_names && item.renderingMode() == PointsPlusNormals))
|
||||
(!with_names && item.renderingMode() == PointsPlusNormals) ||
|
||||
(!with_names && item.renderingMode() == ShadedPoints))
|
||||
{
|
||||
viewer->glDisable(GL_LIGHTING);
|
||||
viewer->glPointSize(2.0f);
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@ public:
|
|||
|
||||
// Indicate if rendering mode is supported
|
||||
bool supportsRenderingMode(RenderingMode m) const {
|
||||
return (m != Gouraud && m!=PointsPlusNormals && m!=Splatting); // CHECK THIS!
|
||||
return (m != Gouraud && m!=PointsPlusNormals && m!=Splatting && m!=ShadedPoints); // CHECK THIS!
|
||||
}
|
||||
|
||||
void draw() const {
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ public :
|
|||
}
|
||||
// Indicates if rendering mode is supported
|
||||
bool supportsRenderingMode(RenderingMode m) const {
|
||||
return (m != Gouraud && m != PointsPlusNormals && m != Splatting && m != Points);
|
||||
return (m != Gouraud && m != PointsPlusNormals && m != Splatting && m != Points && m != ShadedPoints);
|
||||
}
|
||||
void initialize_buffers(CGAL::Three::Viewer_interface *viewer)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -100,7 +100,7 @@ public:
|
|||
|
||||
// Indicate if rendering mode is supported
|
||||
bool supportsRenderingMode(RenderingMode m) const {
|
||||
return (m != Gouraud && m != PointsPlusNormals && m != Splatting && m != Points);
|
||||
return (m != Gouraud && m != PointsPlusNormals && m != Splatting && m != Points && m != ShadedPoints);
|
||||
}
|
||||
|
||||
void draw(CGAL::Three::Viewer_interface* viewer) const;
|
||||
|
|
|
|||
|
|
@ -65,6 +65,8 @@ QString modeName(RenderingMode mode) {
|
|||
{
|
||||
case Points:
|
||||
return QObject::tr("points");
|
||||
case ShadedPoints:
|
||||
return QObject::tr("shaded points");
|
||||
case Wireframe:
|
||||
return QObject::tr("wire");
|
||||
case Flat:
|
||||
|
|
@ -88,6 +90,8 @@ const char* slotName(RenderingMode mode) {
|
|||
{
|
||||
case Points:
|
||||
return SLOT(setPointsMode());
|
||||
case ShadedPoints:
|
||||
return SLOT(setShadedPointsMode());
|
||||
case Wireframe:
|
||||
return SLOT(setWireframeMode());
|
||||
case Flat:
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ public:
|
|||
virtual void invalidateOpenGLBuffers();
|
||||
virtual void selection_changed(bool);
|
||||
// Indicate if rendering mode is supported
|
||||
virtual bool supportsRenderingMode(RenderingMode m) const { return m != Gouraud && m!=Splatting; } // CHECK THIS!
|
||||
virtual bool supportsRenderingMode(RenderingMode m) const { return m != Gouraud && m!=Splatting && m!=ShadedPoints; } // CHECK THIS!
|
||||
// OpenGL drawing in a display list
|
||||
void direct_draw() const;
|
||||
|
||||
|
|
|
|||
|
|
@ -557,9 +557,17 @@ Scene_points_with_normal_item::toolTip() const
|
|||
|
||||
bool Scene_points_with_normal_item::supportsRenderingMode(RenderingMode m) const
|
||||
{
|
||||
return m==Points ||
|
||||
( has_normals() &&
|
||||
( m==PointsPlusNormals || m==Splatting ) );
|
||||
switch ( m )
|
||||
{
|
||||
case Points:
|
||||
case ShadedPoints:
|
||||
case PointsPlusNormals:
|
||||
case Splatting:
|
||||
return true;
|
||||
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
void Scene_points_with_normal_item::drawSplats(CGAL::Three::Viewer_interface* viewer) const
|
||||
|
|
@ -611,7 +619,7 @@ void Scene_points_with_normal_item::drawPoints(CGAL::Three::Viewer_interface* vi
|
|||
ratio_displayed = 3 * limit_fast_drawing / (double)(d->nb_points + d->nb_selected_points);
|
||||
|
||||
vaos[Scene_points_with_normal_item_priv::ThePoints]->bind();
|
||||
if(has_normals())
|
||||
if(has_normals() && renderingMode() == ShadedPoints)
|
||||
{
|
||||
d->program=getShaderProgram(PROGRAM_WITH_LIGHT);
|
||||
attribBuffers(viewer,PROGRAM_WITH_LIGHT);
|
||||
|
|
@ -623,13 +631,16 @@ void Scene_points_with_normal_item::drawPoints(CGAL::Three::Viewer_interface* vi
|
|||
}
|
||||
d->program->bind();
|
||||
d->program->setAttributeValue("colors", this->color());
|
||||
if(renderingMode() != ShadedPoints)
|
||||
d->program->setAttributeValue("normals", QVector3D(0,0,0));
|
||||
|
||||
viewer->glDrawArrays(GL_POINTS, 0,
|
||||
static_cast<GLsizei>(((std::size_t)(ratio_displayed * d->nb_points)/3)));
|
||||
vaos[Scene_points_with_normal_item_priv::ThePoints]->release();
|
||||
d->program->release();
|
||||
|
||||
vaos[Scene_points_with_normal_item_priv::Selected_points]->bind();
|
||||
if(has_normals())
|
||||
if(has_normals() && renderingMode() == ShadedPoints)
|
||||
{
|
||||
d->program=getShaderProgram(PROGRAM_WITH_LIGHT);
|
||||
attribBuffers(viewer,PROGRAM_WITH_LIGHT);
|
||||
|
|
|
|||
|
|
@ -125,7 +125,7 @@ public:
|
|||
QString toolTip() const;
|
||||
|
||||
// Indicate if rendering mode is supported
|
||||
virtual bool supportsRenderingMode(RenderingMode m) const { return ( m!=PointsPlusNormals && m!=Splatting); }
|
||||
virtual bool supportsRenderingMode(RenderingMode m) const { return ( m!=PointsPlusNormals && m!=Splatting && m!=ShadedPoints); }
|
||||
// OpenGL drawing in a display list
|
||||
virtual void draw() const {}
|
||||
virtual void draw(CGAL::Three::Viewer_interface*) const;
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ public:
|
|||
QMenu* contextMenu();
|
||||
|
||||
// Indicate if rendering mode is supported
|
||||
virtual bool supportsRenderingMode(RenderingMode m) const { return (m!=PointsPlusNormals && m!=Splatting); }
|
||||
virtual bool supportsRenderingMode(RenderingMode m) const { return (m!=PointsPlusNormals && m!=Splatting && m!=ShadedPoints); }
|
||||
// Points/Wireframe/Flat/Gouraud OpenGL drawing in a display list
|
||||
void draw() const {}
|
||||
virtual void draw(CGAL::Three::Viewer_interface*) const;
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ public:
|
|||
virtual QString toolTip() const;
|
||||
|
||||
// Indicate if rendering mode is supported
|
||||
virtual bool supportsRenderingMode(RenderingMode m) const { return (m != Splatting && m != PointsPlusNormals && m != Points && m != Gouraud ); }
|
||||
virtual bool supportsRenderingMode(RenderingMode m) const { return (m != Splatting && m != PointsPlusNormals && m != Points && m != Gouraud && m != ShadedPoints); }
|
||||
// Points/Wireframe/Flat/Gouraud OpenGL drawing in a display list
|
||||
void draw() const {}
|
||||
virtual void draw(CGAL::Three::Viewer_interface*) const;
|
||||
|
|
|
|||
|
|
@ -50,8 +50,8 @@ enum RenderingMode { Points = 0,
|
|||
Flat,
|
||||
FlatPlusEdges,
|
||||
Gouraud,
|
||||
LastRenderingMode = Gouraud,
|
||||
NumberOfRenderingMode = LastRenderingMode+1 };
|
||||
ShadedPoints,
|
||||
NumberOfRenderingMode};
|
||||
|
||||
|
||||
namespace CGAL {
|
||||
|
|
|
|||
|
|
@ -285,6 +285,10 @@ public Q_SLOTS:
|
|||
void setPointsMode() {
|
||||
setRenderingMode(Points);
|
||||
}
|
||||
//!Sets the RenderingMode to Points.
|
||||
void setShadedPointsMode() {
|
||||
setRenderingMode(ShadedPoints);
|
||||
}
|
||||
//!Sets the RenderingMode to Wireframe.
|
||||
void setWireframeMode() {
|
||||
setRenderingMode(Wireframe);
|
||||
|
|
|
|||
Loading…
Reference in New Issue