Radium Engine  1.5.20
Loading...
Searching...
No Matches
Ra::Engine::Data::Mesh Class Reference

Mesh, own a Core::Geometry::TriangleMesh. More...

#include <Engine/Data/Mesh.hpp>

+ Inheritance diagram for Ra::Engine::Data::Mesh:
+ Collaboration diagram for Ra::Engine::Data::Mesh:

Public Member Functions

size_t getNumFaces () const override
 
void loadGeometry (const Core::Vector3Array &vertices, const std::vector< uint > &indices)
 
- Public Member Functions inherited from Ra::Engine::Data::IndexedGeometry< Core::Geometry::TriangleMesh >
 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 (Core::Geometry::TriangleMesh &&mesh) override
 
- Public Member Functions inherited from Ra::Engine::Data::CoreGeometryDisplayable< Core::Geometry::TriangleMesh >
 CoreGeometryDisplayable (const std::string &name, MeshRenderMode renderMode=RM_TRIANGLES)
 
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.
 

Additional Inherited Members

- Public Types inherited from Ra::Engine::Data::IndexedGeometry< Core::Geometry::TriangleMesh >
using base
 
- Public Types inherited from Ra::Engine::Data::CoreGeometryDisplayable< Core::Geometry::TriangleMesh >
using base
 
using CoreGeometry
 
- 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 Member Functions inherited from Ra::Engine::Data::IndexedGeometry< Core::Geometry::TriangleMesh >
void updateGL_specific_impl () override
 
- Protected Member Functions inherited from Ra::Engine::Data::CoreGeometryDisplayable< Core::Geometry::TriangleMesh >
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.
 
- Protected Attributes inherited from Ra::Engine::Data::CoreGeometryDisplayable< Core::Geometry::TriangleMesh >
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

Mesh, own a Core::Geometry::TriangleMesh.

Definition at line 410 of file Mesh.hpp.

Member Function Documentation

◆ getNumFaces()

size_t Ra::Engine::Data::Mesh::getNumFaces ( ) const
overridevirtual
Todo
fix this once we have explicit triangle fan and strip management.

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

Definition at line 33 of file Mesh.cpp.

◆ loadGeometry()

void Ra::Engine::Data::Mesh::loadGeometry ( const Core::Vector3Array & vertices,
const std::vector< uint > & indices )
Todo
find an alternative
Todo
check line vs triangle here is a bug

Definition at line 47 of file Mesh.cpp.

+ Here is the call graph for this function:

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