Radium Engine
1.5.20
|
Template class to manage the Displayable aspect of a Core Geomertry, such as TriangleMesh. More...
#include <Engine/Data/Mesh.hpp>
Public Types | |
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 } |
Public Member Functions | |
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 |
virtual void | loadGeometry (CoreGeometry &&mesh) |
void | updateGL () override |
Update (i.e. send to GPU) the buffers marked as dirty. | |
void | setAttribNameCorrespondance (const std::string &meshAttribName, const std::string &shaderAttribName) |
Core::Geometry getters | |
const Core::Geometry::AbstractGeometry & | getAbstractGeometry () const override |
Core::Geometry::AbstractGeometry & | getAbstractGeometry () override |
const Core::Geometry::AttribArrayGeometry & | getAttribArrayGeometry () const override |
Core::Geometry::AttribArrayGeometry & | getAttribArrayGeometry () 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::string & | getName () 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::string & | getName () const |
Returns the name of the mesh. | |
virtual void | render (const ShaderProgram *prog)=0 |
virtual size_t | getNumFaces () const |
Protected Member Functions | |
virtual void | updateGL_specific_impl () |
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 | |
BijectiveAssociation< std::string, std::string > | m_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 } |
Template class to manage the Displayable aspect of a Core Geomertry, such as TriangleMesh.
using Ra::Engine::Data::CoreGeometryDisplayable< T >::base = AttribArrayDisplayable |
using Ra::Engine::Data::CoreGeometryDisplayable< T >::CoreGeometry = T |
|
explicit |
|
inline |
|
protected |
|
protected |
|
protected |
|
inlineoverridevirtual |
Returns the underlying AbstractGeometry, which is in fact a TriangleMesh
Implements Ra::Engine::Data::Displayable.
|
inlineoverridevirtual |
Implements Ra::Engine::Data::Displayable.
|
inlineoverridevirtual |
Implements Ra::Engine::Data::AttribArrayDisplayable.
|
inlineoverridevirtual |
Implements Ra::Engine::Data::AttribArrayDisplayable.
|
inline |
|
inline |
|
inlineoverridevirtual |
Reimplemented from Ra::Engine::Data::Displayable.
|
virtual |
Use the given geometry as base for a display mesh. This will move mesh
and *this will take the ownership of the data. The currently owned mesh is deleted, if any. This method should be called to set or replace the CoreGeometry, if you want to update attributes or indices, use getCoreGeometry and Core::Geometry::AttribArrayGeometry setters instead.
Reimplemented in Ra::Engine::Data::IndexedGeometry< T >, Ra::Engine::Data::IndexedGeometry< Core::Geometry::LineMesh >, Ra::Engine::Data::IndexedGeometry< Core::Geometry::TriangleMesh >, and Ra::Engine::Data::MultiIndexedGeometry< T >.
|
protected |
void Ra::Engine::Data::CoreGeometryDisplayable< CoreGeometry >::setAttribNameCorrespondance | ( | const std::string & | meshAttribName, |
const std::string & | shaderAttribName ) |
Bind meshAttribName to shaderAttribName. meshAttribName is a vertex attrib added to the underlying CoreGeometry shaderAttribName is the name of the input paramter of the shader. By default the same name is used, but this mecanism allows to override this behavior. Only one shaderAttribName can be bound to a meshAttribName and the other way round.
meshAttribName | name of the attribute on the CoreGeomtry side |
shaderAttribName | name of the input vertex attribute on the shader side. |
|
protected |
|
overridevirtual |
Update (i.e. send to GPU) the buffers marked as dirty.
Implements Ra::Engine::Data::AttribArrayDisplayable.
Definition at line 838 of file Mesh.hpp.
|
inlineprotectedvirtual |
|
protected |
|
protected |