Radium Engine  1.5.20
Loading...
Searching...
No Matches
Ra::Engine::Data::GeneralMesh< T > Class Template Reference

#include <Engine/Data/Mesh.hpp>

+ Inheritance diagram for Ra::Engine::Data::GeneralMesh< T >:
+ Collaboration diagram for Ra::Engine::Data::GeneralMesh< T >:

Public Member Functions

size_t getNumFaces () const override
 
 IndexedGeometry (const std::string &name, typename base::CoreGeometry &&geom, typename base::MeshRenderMode renderMode=base::MeshRenderMode::RM_TRIANGLES)
 
- Public Member Functions inherited from Ra::Engine::Data::IndexedGeometry< T >
 IndexedGeometry (const std::string &name, typename base::CoreGeometry &&geom, typename base::MeshRenderMode renderMode=base::MeshRenderMode::RM_TRIANGLES)
 
void render (const ShaderProgram *prog) override
 
void loadGeometry (T &&mesh) override
 
- Public Member Functions inherited from Ra::Engine::Data::CoreGeometryDisplayable< T >
 CoreGeometryDisplayable (const std::string &name, MeshRenderMode renderMode=RM_TRIANGLES)
 
template<typename A >
Ra::Core::Utils::AttribHandle< A > addAttrib (const std::string &name, const typename Core::VectorArray< A > &data)
 Helper function that calls Ra::Core::CoreGeometry::addAttrib()
 
size_t getNumVertices () const override
 
void updateGL () override
 Update (i.e. send to GPU) the buffers marked as dirty.
 
void setAttribNameCorrespondance (const std::string &meshAttribName, const std::string &shaderAttribName)
 
const Core::Geometry::AbstractGeometrygetAbstractGeometry () const override
 
Core::Geometry::AbstractGeometrygetAbstractGeometry () override
 
const Core::Geometry::AttribArrayGeometrygetAttribArrayGeometry () const override
 
Core::Geometry::AttribArrayGeometrygetAttribArrayGeometry () override
 
const CoreGeometry & getCoreGeometry () const
 
CoreGeometry & getCoreGeometry ()
 
- Public Member Functions inherited from Ra::Engine::Data::AttribArrayDisplayable
 AttribArrayDisplayable (const std::string &name, MeshRenderMode renderMode=RM_TRIANGLES)
 
 AttribArrayDisplayable (const AttribArrayDisplayable &rhs)=delete
 
void operator= (const AttribArrayDisplayable &rhs)=delete
 
void setRenderMode (MeshRenderMode mode)
 Set the render mode.
 
MeshRenderMode getRenderMode () const
 Get the render mode.
 
Ra::Core::Utils::optional< gl::GLuint > getVboHandle (const std::string &name)
 Get opengl's vbo handle (uint) corresponding to attrib name.
 
Ra::Core::Utils::optional< gl::GLuint > getVaoHandle ()
 Get opengl's vao handle (uint).
 
const std::stringgetName () const
 Returns the name of the mesh.
 
void setDirty (const Core::Geometry::MeshAttrib &type)
 
void setDirty (const std::string &name)
 
void setDirty (unsigned int index)
 
- Public Member Functions inherited from Ra::Engine::Data::Displayable
 Displayable (const std::string &name)
 
 Displayable (const Displayable &rhs)=delete
 
void operator= (const Displayable &rhs)=delete
 
PickingRenderMode pickingRenderMode () const
 Returns the picking rendermode advised by the object (default PickingRenderMode::NO_PICKING)
 
const std::stringgetName () const
 Returns the name of the mesh.
 
- Public Member Functions inherited from Ra::Engine::Data::VaoIndices
void setIndicesDirty ()
 Tag the indices as dirty, asking for a update to gpu.
 

Protected Member Functions

void updateGL_specific_impl () override
 
- Protected Member Functions inherited from Ra::Engine::Data::IndexedGeometry< T >
void updateGL_specific_impl () override
 
- Protected Member Functions inherited from Ra::Engine::Data::CoreGeometryDisplayable< T >
void loadGeometry_common (CoreGeometry &&mesh)
 
void setupCoreMeshObservers ()
 
void autoVertexAttribPointer (const ShaderProgram *prog)
 assume m_vao is bound.
 
void addAttribObserver (const std::string &name)
 
void addToTranslationTable (const std::string &name)
 
- Protected Member Functions inherited from Ra::Engine::Data::AttribArrayDisplayable
void updatePickingRenderMode ()
 Update the picking render mode according to the object render mode.
 

Additional Inherited Members

- Public Types inherited from Ra::Engine::Data::IndexedGeometry< T >
using base = CoreGeometryDisplayable<T>
 
- Public Types inherited from Ra::Engine::Data::CoreGeometryDisplayable< T >
using base = AttribArrayDisplayable
 
using CoreGeometry = T
 
- Public Types inherited from Ra::Engine::Data::AttribArrayDisplayable
enum  MeshRenderMode : uint {
  RM_POINTS = 0x0000 , RM_LINES = 0x0001 , RM_LINE_LOOP = 0x0002 , RM_LINE_STRIP = 0x0003 ,
  RM_TRIANGLES = 0x0004 , RM_TRIANGLE_STRIP = 0x0005 , RM_TRIANGLE_FAN = 0x0006 , RM_QUADS = 0x0007 ,
  RM_QUAD_STRIP = 0x0008 , RM_POLYGON = 0x0009 , RM_LINES_ADJACENCY = 0x000A , RM_LINE_STRIP_ADJACENCY = 0x000B ,
  RM_TRIANGLES_ADJACENCY = 0x000C , RM_TRIANGLE_STRIP_ADJACENCY = 0x000D , RM_PATCHES = 0x000E
}
 
- Public Types inherited from Ra::Engine::Data::Displayable
enum  PickingRenderMode {
  PKM_POINTS = 0 , PKM_LINES = 1 , PKM_LINE_ADJ = 2 , PKM_TRI = 3 ,
  NO_PICKING
}
 
- Protected Attributes inherited from Ra::Engine::Data::CoreGeometryDisplayable< T >
BijectiveAssociation< std::string, std::stringm_translationTable {}
 
CoreGeometry m_mesh
 
- Protected Attributes inherited from Ra::Engine::Data::AttribArrayDisplayable
std::unique_ptr< globjects::VertexArray > m_vao
 
MeshRenderMode m_renderMode { MeshRenderMode::RM_TRIANGLES }
 
std::vector< std::unique_ptr< globjects::Buffer > > m_vbos
 
std::vector< bool > m_dataDirty
 
std::map< std::string, unsigned int > m_handleToBuffer
 
bool m_isDirty { false }
 General dirty bit of the mesh.
 
- Protected Attributes inherited from Ra::Engine::Data::Displayable
PickingRenderMode m_pickingRenderMode { NO_PICKING }
 
- Protected Attributes inherited from Ra::Engine::Data::VaoIndices
std::unique_ptr< globjects::Buffer > m_indices { nullptr }
 
bool m_indicesDirty { true }
 
size_t m_numElements { 0 }
 

Detailed Description

template<typename T>
class Ra::Engine::Data::GeneralMesh< T >

GeneralMesh, own a Mesh of type T ( e.g. Core::Geometry::PolyMesh or Core::Geometry::QuadMesh) This class handle the GPU representation of a polyhedron mesh. Each face of the polyhedron (typically quads) are assume to be planar and convex. Simple triangulation is performed on the fly before sending data to the GPU.

Definition at line 438 of file Mesh.hpp.

Member Function Documentation

◆ getNumFaces()

template<typename T >
size_t Ra::Engine::Data::GeneralMesh< T >::getNumFaces ( ) const
inlineoverridevirtual

Reimplemented from Ra::Engine::Data::Displayable.

Definition at line 1070 of file Mesh.hpp.

◆ IndexedGeometry()

template<typename T >
Ra::Engine::Data::IndexedGeometry< T >::IndexedGeometry ( const std::string & name,
typename base::CoreGeometry && geom,
typename base::MeshRenderMode renderMode = base::MeshRenderMode::RM_TRIANGLES )
explicit

Definition at line 339 of file Mesh.hpp.

◆ updateGL_specific_impl()

template<typename T >
void Ra::Engine::Data::GeneralMesh< T >::updateGL_specific_impl ( )
inlineoverrideprotectedvirtual

this one do not work since m_indices is not a std::vector

Reimplemented from Ra::Engine::Data::CoreGeometryDisplayable< T >.

Definition at line 1075 of file Mesh.hpp.


The documentation for this class was generated from the following file: