![]() |
Radium Engine
1.5.20
|
#include <Engine/Data/Mesh.hpp>
Public Types | |
using | base = CoreGeometryDisplayable<T> |
![]() | |
using | base = AttribArrayDisplayable |
using | CoreGeometry = T |
![]() | |
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 } |
![]() | |
enum | PickingRenderMode { PKM_POINTS = 0 , PKM_LINES = 1 , PKM_LINE_ADJ = 2 , PKM_TRI = 3 , NO_PICKING } |
Public Member Functions | |
MultiIndexedGeometry (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 |
![]() | |
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::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 () |
![]() | |
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) |
![]() | |
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 size_t | getNumFaces () const |
Protected Types | |
using | LayerSemanticCollection = Core::Utils::ObjectWithSemantic::SemanticNameCollection |
using | LayerSemantic = Core::Utils::ObjectWithSemantic::SemanticName |
using | LayerKeyType = std::pair<LayerSemanticCollection, std::string> |
using | EntryType = std::pair<bool, VaoIndices*> |
Protected Member Functions | |
void | updateGL_specific_impl () override |
![]() | |
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) |
![]() | |
void | updatePickingRenderMode () |
Update the picking render mode according to the object render mode. | |
Protected Attributes | |
std::unordered_map< LayerKeyType, EntryType, KeyHash > | m_indices |
![]() | |
BijectiveAssociation< std::string, std::string > | m_translationTable {} |
CoreGeometry | m_mesh |
![]() | |
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. | |
![]() | |
PickingRenderMode | m_pickingRenderMode { NO_PICKING } |
An engine mesh owning a MultiIndexedCoreGeometry, with multiple indices layer.
using Ra::Engine::Data::MultiIndexedGeometry< T >::base = CoreGeometryDisplayable<T> |
|
protected |
|
protected |
|
protected |
|
protected |
|
explicit |
|
overridevirtual |
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 from Ra::Engine::Data::CoreGeometryDisplayable< T >.
Definition at line 984 of file Mesh.hpp.
|
overridevirtual |
Draw the mesh. Prog is used to set VertexAttribBinding, but it has to be already binded
Implements Ra::Engine::Data::Displayable.
|
overrideprotectedvirtual |
Reimplemented from Ra::Engine::Data::CoreGeometryDisplayable< T >.
|
protected |