Jopnal Engine  alpha 0.4
Simple Component Based 2D/3D Game Engine
Classes | Public Types | Public Member Functions | Static Public Member Functions | List of all members
jop::Mesh Class Reference

#include <Mesh.hpp>

Inheritance diagram for jop::Mesh:
jop::Resource jop::SafeReferenceable< Resource > jop::SerializeInfo jop::BoxMesh jop::CapsuleMesh jop::CircleMesh jop::ConeMesh jop::CylinderMesh jop::RectangleMesh jop::SphereMesh

Classes

struct  VertexIndex
 

Public Types

enum  VertexComponent : uint32 {
  Position = 1, TexCoords = 1 << 1, Normal = 1 << 2, Tangent = 1 << 3,
  BiTangent = 1 << 4, Color = 1 << 5
}
 

Public Member Functions

 Mesh (const std::string &name)
 Constructor. More...
 
 Mesh (const Mesh &other, const std::string &newName)
 Copy constructor. More...
 
bool load (const void *vertexData, const uint32 vertexBytes, const uint32 vertexComponents, const void *indexData=nullptr, const uint16 indexSize=0, const uint32 indexAmount=0)
 Load mesh from memory. More...
 
bool load (const std::vector< Vertex > &vertexArray, const std::vector< unsigned int > &indexArray)
 Load mesh from memory using default vertex format. More...
 
void draw () const
 Draw this mesh. More...
 
void destroy ()
 Destroy this mesh. More...
 
const std::pair< glm::vec3, glm::vec3 > & getBounds () const
 Get the bounds of this mesh. More...
 
unsigned int getVertexAmount () const
 Get the vertex amount. More...
 
uint16 getVertexSize () const
 Get the total vertex size. More...
 
void * getVertexOffset (const VertexComponent component) const
 Get the byte offset for the given component. More...
 
bool hasVertexComponent (const uint32 component) const
 Check if this mesh has a vertex component. More...
 
unsigned int getElementAmount () const
 Get the element (index) amount. More...
 
uint16 getElementSize () const
 Get the element size. More...
 
unsigned int getElementEnum () const
 Get the element type OpenGL enum. More...
 
const VertexBuffergetIndexBuffer () const
 Returns index buffer. More...
 
const VertexBuffergetVertexBuffer () const
 Returns vertex buffer. More...
 
void updateBounds (const glm::vec3 &min, const glm::vec3 &max)
 Manually update the bounds of this mesh. More...
 
- Public Member Functions inherited from jop::Resource
 Resource (const std::string &name)
 Constructor. More...
 
virtual ~Resource ()=0
 Virtual destructor. More...
 
const std::string & getName () const
 Get the name of this resource. More...
 
void setPersistence (const unsigned short level)
 Set the persistence level. More...
 
unsigned short getPersistence () const
 Get the persistence level. More...
 
- Public Member Functions inherited from jop::SafeReferenceable< Resource >
WeakReference< ResourcegetReference () const
 Get a weak reference to the bound object. More...
 
- Public Member Functions inherited from jop::SerializeInfo
 SerializeInfo ()
 
void setSerializePackage (const uint16 package)
 
uint16 getSerializePackage () const
 
void setShouldSerialize (const bool set)
 
bool shouldSerialize () const
 
void setLightSerializeable (const bool set)
 
bool isLightSerializeable () const
 

Static Public Member Functions

static uint16 getVertexSize (const uint32 components)
 Get the size of a vertex with the given format. More...
 
static MeshgetDefault ()
 Get the default mesh. More...
 

Additional Inherited Members

- Protected Member Functions inherited from jop::Resource
 Resource (const Resource &other, const std::string &newName)
 Copy constructor. More...
 
- Protected Member Functions inherited from jop::SafeReferenceable< Resource >
 SafeReferenceable (Resource *ref)
 Constructor. More...
 
 SafeReferenceable (SafeReferenceable< Resource > &&other)
 Move constructor. More...
 
SafeReferenceableoperator= (SafeReferenceable< Resource > &&other)
 Move assignment operator. More...
 
 ~SafeReferenceable ()
 Protected destructor. More...
 

Detailed Description

Definition at line 37 of file Mesh.hpp.

Member Enumeration Documentation

Vertex components

Enumerator
Position 
TexCoords 
Normal 
Tangent 
BiTangent 
Color 

Definition at line 47 of file Mesh.hpp.

Constructor & Destructor Documentation

jop::Mesh::Mesh ( const std::string &  name)

Constructor.

Does not initialize any vertices.

Parameters
nameName of the resource
jop::Mesh::Mesh ( const Mesh other,
const std::string &  newName 
)

Copy constructor.

Warning
A mesh on OpenGL ES 2.0 cannot be copied. The resulting copied mesh won't be valid.
Parameters
otherThe other mesh to be copied
newNameName of the new mesh

Member Function Documentation

void jop::Mesh::destroy ( )

Destroy this mesh.

After this call, this mesh won't be valid and cannot be used in drawing. The vertex & index data is removed from the GPU memory.

void jop::Mesh::draw ( ) const

Draw this mesh.

Using this function requires that the shader state has been properly configured. This function will set up the vertex attributes pointers, buffer bindings and call glDrawElements or glDrawArrays depending on whether there are indices or not.

const std::pair<glm::vec3, glm::vec3>& jop::Mesh::getBounds ( ) const

Get the bounds of this mesh.

Returns
Bounds of this mesh
static Mesh& jop::Mesh::getDefault ( )
static

Get the default mesh.

The default mesh is a box with a size of 1.

Returns
Reference to the mesh
unsigned int jop::Mesh::getElementAmount ( ) const

Get the element (index) amount.

Returns
The element amount
unsigned int jop::Mesh::getElementEnum ( ) const

Get the element type OpenGL enum.

The returned enum can be used with glDrawElements.

Returns
The element type OpenGL enum
uint16 jop::Mesh::getElementSize ( ) const

Get the element size.

Returns
The size of a single in bytes
See also
getElementAmount()
const VertexBuffer& jop::Mesh::getIndexBuffer ( ) const

Returns index buffer.

Returns
Reference to the index buffer
unsigned int jop::Mesh::getVertexAmount ( ) const

Get the vertex amount.

Returns
The vertex amount
const VertexBuffer& jop::Mesh::getVertexBuffer ( ) const

Returns vertex buffer.

Returns
Reference to the index buffer
void* jop::Mesh::getVertexOffset ( const VertexComponent  component) const

Get the byte offset for the given component.

Warning
If the mesh doesn't have the queried component, the resulting behavior is undefined
Parameters
componentThe vertex component
Returns
The byte offset. This can be passed to glVertexAttribPointer etc.
uint16 jop::Mesh::getVertexSize ( ) const

Get the total vertex size.

Returns
Vertex size in bytes
static uint16 jop::Mesh::getVertexSize ( const uint32  components)
static

Get the size of a vertex with the given format.

Parameters
componentsVertex components
Returns
Size of the vertex
bool jop::Mesh::hasVertexComponent ( const uint32  component) const

Check if this mesh has a vertex component.

Parameters
componentThe component to check
Returns
True if the component exists
bool jop::Mesh::load ( const void *  vertexData,
const uint32  vertexBytes,
const uint32  vertexComponents,
const void *  indexData = nullptr,
const uint16  indexSize = 0,
const uint32  indexAmount = 0 
)

Load mesh from memory.

This function takes the vertex data in binary format. The order of vertex components: Position, texture coordinated, normal, tangent, bi-tangent, color

Parameters
vertexDataPointer to the vertex data
vertexBytesSize of the vertex data buffer in bytes
vertexComponentsThe vertex components
indexDataPointer to the index data
indexSizeSize of a single index in bytes
indexAmountAmount of indices
Returns
True if loaded successfully
bool jop::Mesh::load ( const std::vector< Vertex > &  vertexArray,
const std::vector< unsigned int > &  indexArray 
)

Load mesh from memory using default vertex format.

Parameters
vertexArrayContainer holding the vertex data
indexArrayContainer holding index data
Returns
True if successfully loaded
void jop::Mesh::updateBounds ( const glm::vec3 &  min,
const glm::vec3 &  max 
)

Manually update the bounds of this mesh.

Parameters
minThe minimum coordinated
maxThe maximum coordinates

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