\( \newcommand{\E}{\mathrm{E}} \) \( \newcommand{\A}{\mathrm{A}} \) \( \newcommand{\R}{\mathrm{R}} \) \( \newcommand{\N}{\mathrm{N}} \) \( \newcommand{\Q}{\mathrm{Q}} \) \( \newcommand{\Z}{\mathrm{Z}} \) \( \def\ccSum #1#2#3{ \sum_{#1}^{#2}{#3} } \def\ccProd #1#2#3{ \sum_{#1}^{#2}{#3} }\)
CGAL 5.0 - Three
CGAL::Three::Primitive_container Class Referenceabstract

#include <CGAL/Three/Primitive_container.h>

Inherited by CGAL::Three::Edge_container, CGAL::Three::Point_container, and CGAL::Three::Triangle_container.

Definition

The Primitive_container struct provides a base for the OpenGL data wrappers.

Public Member Functions

 Primitive_container (int program, bool indexed)
 Primitive_container ructor. More...
 
void bindUniformValues (CGAL::Three::Viewer_interface *viewer)
 bindUniformValues sets the uniform variables for the concerned shaders. More...
 
virtual void draw (CGAL::Three::Viewer_interface *viewer, bool is_color_uniform)=0
 draw is the function that actually renders the data. More...
 
virtual void initializeBuffers (CGAL::Three::Viewer_interface *viewer)
 initializeBuffers sends the data to the GPU memory. More...
 
virtual void initGL (CGAL::Three::Viewer_interface *viewer)=0
 initGL initializes the OpenGL containers. More...
 
void removeViewer (CGAL::Three::Viewer_interface *viewer)
 removeViewer deletes and removes the Vao assigned to viewer from Vaos. More...
 
void reset_vbos (Scene_item_rendering_helper::Gl_data_names)
 reset_vbos de-allocates the Vbos. More...
 
void setFlatDataSize (std::size_t)
 setFlatDataSize sets the number of un-indexed vertices of this container. More...
 
void setIdxSize (std::size_t)
 setIdxDataSize sets the number of indexed vertices of this container. More...
 
void setCenterSize (std::size_t)
 setCenterSize sets the number of instances of the item in this container. More...
 
bool isGLInit (Viewer_interface *viewer) const
 Returns true if the container Vaos and Vbos are created in the context of viewer. More...
 
void allocate (std::size_t vbo_id, void *data, int datasize)
 allocate sets the data for a Vbo. More...
 
void setVao (Viewer_interface *viewer, Vao *)
 setVao sets the Vao corresponding to viewer of this container.
 
void setVbos (std::vector< Vbo *>)
 setVbos sets the vector of Vbos for this container. More...
 
void setVbo (std::size_t vbo_id, Vbo *vbo)
 setVbo sets the vbo_idth Vbo of this container to vbo. More...
 
void setGLInit (Viewer_interface *viewer, bool)
 Use this to specify if the container Vaos and Vbos are created in the context of viewer.
 
void setTexture (Texture *)
 setter for the texture.
 
void setTextureSize (const QSize &size)
 setter for the texture size.
 
void setTextureData (int i, int j, int r, int g, int b)
 setter for the texture data at UV coordinates (i,j).
 
VaogetVao (Viewer_interface *viewer) const
 Returns the Vao bound to viewer.
 
VbogetVbo (std::size_t id) const
 getVbo returns the idth Vbo of this container.
 
int getProgram () const
 getProgram returns the OpenGL_program_IDs used with this container.
 
bool isDataIndexed ()
 isDataIndexed specifies if the data is indexed or not. More...
 
TexturegetTexture () const
 getter for the texture.
 
GLuint getTextureId () const
 getter for the texture id.
 
QSize getTextureSize () const
 getter for the size of the texture.
 
bool getClipping () const
 getter for the clipping. Default is true.
 
void setInit (Viewer_interface *viewer, bool)
 Use this to specify if the container Vbos are filled for viewer.
 
bool isInit (Viewer_interface *viewer) const
 isInit returns true if the container Vbos are filled for viewer. More...
 
std::size_t getFlatDataSize () const
 getFlatDataSize returns the number of un-indexed vertices. More...
 
std::size_t getIdxSize () const
 getIdxSize returns the number of indexed vertices. More...
 
int getTupleSize () const
 getTupleSize returns the number of coordinates in one vertex. More...
 
std::size_t getCenterSize () const
 getCenterSize returns the number of instances of the item in this container. More...
 

Setters for the shaders parameters.

void setSelected (bool)
 Setter for the "selected" uniform parameter.
 
void setColor (QColor)
 Setter for the "color" parameter.
 
void setStride (std::size_t id, int stride)
 Setter for the "stride" parameter.
 
void setOffset (std::size_t id, int offset)
 Setter for the "offset" parameter.
 
void setTupleSize (int ts)
 setter for the tuple size: the number of coordinates of one vertex.
 
void setClipping (bool b)
 setter for the clipping. If b is false, then the clipping box will have no effect.
 

Getters for the shaders parameters.

bool isSelected () const
 getter for the "selected" parameter
 
QColor getColor () const
 getter for the "color" parameter
 

Constructor & Destructor Documentation

◆ Primitive_container()

CGAL::Three::Primitive_container::Primitive_container ( int  program,
bool  indexed 
)

Primitive_container ructor.

Parameters
programthe QOpenGLShaderProgram used by the VAOs.
indexedmust be true if the data is indexed, false otherwise.

Member Function Documentation

◆ allocate()

void CGAL::Three::Primitive_container::allocate ( std::size_t  vbo_id,
void *  data,
int  datasize 
)

allocate sets the data for a Vbo.

Parameters
vbo_idthe index of the Vbo in this container vector.
datathe data to give to the Vbo.
datasizethe size in bytes of data.

◆ bindUniformValues()

void CGAL::Three::Primitive_container::bindUniformValues ( CGAL::Three::Viewer_interface viewer)

bindUniformValues sets the uniform variables for the concerned shaders.

Such variables are valid at every step of the pipeline. For example, the ModelViewProjection matrix, the uniform color or the is_selected state are uniform values. This function is called in the draw()function.

Attention
Vbos data should be allocated for this function to be effective.
This should only be called once the Vaos and the Vbos are created, in a valid OpenGL context.
Parameters
viewerthe active Viewer_interface

◆ draw()

virtual void CGAL::Three::Primitive_container::draw ( CGAL::Three::Viewer_interface viewer,
bool  is_color_uniform 
)
pure virtual

draw is the function that actually renders the data.

Parameters
viewerthe active Viewer_interface.
is_color_uniformshould be true if the item is unicolor.

Implemented in CGAL::Three::Triangle_container, CGAL::Three::Edge_container, and CGAL::Three::Point_container.

◆ getCenterSize()

std::size_t CGAL::Three::Primitive_container::getCenterSize ( ) const

getCenterSize returns the number of instances of the item in this container.

◆ getFlatDataSize()

std::size_t CGAL::Three::Primitive_container::getFlatDataSize ( ) const

getFlatDataSize returns the number of un-indexed vertices.

◆ getIdxSize()

std::size_t CGAL::Three::Primitive_container::getIdxSize ( ) const

getIdxSize returns the number of indexed vertices.

◆ getTupleSize()

int CGAL::Three::Primitive_container::getTupleSize ( ) const

getTupleSize returns the number of coordinates in one vertex.

Default is 3.

◆ initGL()

virtual void CGAL::Three::Primitive_container::initGL ( CGAL::Three::Viewer_interface viewer)
pure virtual

initGL initializes the OpenGL containers.

Attention
It must be called within a valid OpenGL context. The draw() function of an item is always a safe place to call this.
Parameters
viewerthe active Viewer_interface.

Implemented in CGAL::Three::Triangle_container, CGAL::Three::Edge_container, and CGAL::Three::Point_container.

◆ initializeBuffers()

virtual void CGAL::Three::Primitive_container::initializeBuffers ( CGAL::Three::Viewer_interface viewer)
virtual

initializeBuffers sends the data to the GPU memory.

It actually fills up the buffers with the data provided by Vbo::allocate();

Parameters
viewerthe active Viewer_interface.

◆ isDataIndexed()

bool CGAL::Three::Primitive_container::isDataIndexed ( )

isDataIndexed specifies if the data is indexed or not.

This matters for the internal drawing functions.

◆ isGLInit()

bool CGAL::Three::Primitive_container::isGLInit ( Viewer_interface viewer) const

Returns true if the container Vaos and Vbos are created in the context of viewer.

◆ isInit()

bool CGAL::Three::Primitive_container::isInit ( Viewer_interface viewer) const

isInit returns true if the container Vbos are filled for viewer.

◆ removeViewer()

void CGAL::Three::Primitive_container::removeViewer ( CGAL::Three::Viewer_interface viewer)

removeViewer deletes and removes the Vao assigned to viewer from Vaos.

Parameters
viewerthe Viewer_interface to remove.

◆ reset_vbos()

void CGAL::Three::Primitive_container::reset_vbos ( Scene_item_rendering_helper::Gl_data_names  )

reset_vbos de-allocates the Vbos.

It must be called when the Vbos data is updated.

◆ setCenterSize()

void CGAL::Three::Primitive_container::setCenterSize ( std::size_t  )

setCenterSize sets the number of instances of the item in this container.

If the program of this container is not instanced, you can ignore this function.

◆ setFlatDataSize()

void CGAL::Three::Primitive_container::setFlatDataSize ( std::size_t  )

setFlatDataSize sets the number of un-indexed vertices of this container.

If the vertices are indexed, you can ignore this function.

◆ setIdxSize()

void CGAL::Three::Primitive_container::setIdxSize ( std::size_t  )

setIdxDataSize sets the number of indexed vertices of this container.

If the vertices are not indexed, you can ignore this function.

◆ setVbo()

void CGAL::Three::Primitive_container::setVbo ( std::size_t  vbo_id,
Vbo vbo 
)

setVbo sets the vbo_idth Vbo of this container to vbo.

Parameters
vbo_id
vbo

◆ setVbos()

void CGAL::Three::Primitive_container::setVbos ( std::vector< Vbo *>  )

setVbos sets the vector of Vbos for this container.

It must contain at least all the Vbos that will be used by the Vaos.