Tucano
0.1
A library for rapid prototyping with modern OpenGL and GLSL
|
A common Mesh, usually containing triagles or points. More...
#include <mesh.hpp>
Public Member Functions | |
Mesh (void) | |
Default Constructor. More... | |
int | getNumberOfElements (void) |
Returns the number of elements (primitives such as triangles) of the mesh. More... | |
int | getNumberOfVertices (void) |
Returns the number of vertices in the mesh. More... | |
void | resetLocations (void) |
Resets all vertex attributes locations to -1. More... | |
void | reset (void) |
void | loadVertices (vector< Eigen::Vector4f > &vert) |
Load vertices (x,y,z,w) and creates appropriate vertex attribute. The default attribute name is "in_Position". Computes bounding box and centroid and normalization factors (scale). More... | |
void | loadNormals (vector< Eigen::Vector3f > &norm) |
Load normals (x,y,z) as a vertex attribute. More... | |
void | loadTexCoords (vector< Eigen::Vector2f > &tex, bool normalize=false) |
Load tex coords (u,v) as a vertex attribute. Optionally normalizes coords in range [0,1]. More... | |
void | loadColors (vector< Eigen::Vector4f > &clrs) |
Load colors (r,g,b,a) as a vertex attribute. More... | |
void | loadIndices (vector< GLuint > &ind) |
Load indices into indices array. More... | |
void | setDefaultAttribLocations (void) |
Sets default attribute locations. vertex coords -> location 0 normals -> location 1 colors -> location 2 texCoords -> location 3. More... | |
bool | hasAttribute (const string &name) const |
Returns wether an attribute exists or not. More... | |
VertexAttribute * | getAttribute (const string &name) |
Returns a pointer to an attribute Given an attribute name, searches to see if it exists, if so, returns a pointer to it. More... | |
void | setAttributeLocation (Shader *shader) |
Automatically sets the attribute locations for a given Shader. More... | |
void | setAttributeLocation (const Shader &shader) |
void | setAttributeLocation (string name, GLint loc) |
Sets the location of a generic vertex attribute. More... | |
VertexAttribute * | createAttribute (string name, vector< Eigen::Vector4f > &attrib) |
Creates and loads a new mesh attribute of 4 floats. More... | |
VertexAttribute * | createAttribute (string name, vector< Eigen::Vector3f > &attrib) |
Creates and loads a new mesh attribute of 3 floats. More... | |
VertexAttribute * | createAttribute (string name, vector< Eigen::Vector2f > &attrib) |
Creates and loads a new mesh attribute of 2 floats. More... | |
virtual void | bindBuffers (void) |
Binds all buffers. More... | |
virtual void | unbindBuffers (void) |
Unbinds all buffers. More... | |
virtual void | renderPoints (void) |
Render only points without index buffer. More... | |
virtual void | renderElements (void) |
Call the draw method for rendering triangles. This method requires that a index buffer has been created. More... | |
virtual void | renderLineLoop (void) |
Render all vertices as a continous line loop. More... | |
virtual void | renderPatches (void) |
Call the draw method for rendering patches. This method requires that a index buffer has been created. More... | |
virtual void | render (void) |
Render the mesh triangles. The method binds the buffers, calls the method to render triangles, and then unbinds all buffers. Note that a index buffer is necessary. More... | |
void | createParallelepiped (float x, float y, float z) |
Sets the mesh as a Parallelpiped with given dimensions, scales so larger side is equal to 1. More... | |
void | createQuad (void) |
Sets the mesh as Unit Quad. More... | |
Public Member Functions inherited from Tucano::Model | |
Model (void) | |
Eigen::Vector4f | getColor (void) |
Returns the default color of the model. More... | |
void | setColor (const Eigen::Vector4f &color) |
Sets the default color of the model. More... | |
virtual Eigen::Vector3f | getObjectCenter (void) const |
Returns the center of the axis-aligned bounding box. More... | |
virtual Eigen::Vector3f | getCentroid (void) const |
Returns the centroid of the model. More... | |
virtual float | getBoundingSphereRadius (void) const |
Eigen::Affine3f | getModelMatrix (void) const |
Returns the model matrix. More... | |
Eigen::Affine3f * | modelMatrix (void) |
Returns a pointer to the model matrix. More... | |
void | setModelMatrix (const Eigen::Affine3f &m) |
Sets the model matrix. More... | |
float | getScale (void) const |
Returns the scale factor for fitting the model inside a unit cube. More... | |
void | normalizeModelMatrix (void) |
Normalize model matrix to center and scale model. The model matrix will include a translation to place model's centroid at the origin, and scale the model to fit inside a unit sphere. More... | |
void | desnormalizeModelMatrix (void) |
Desnormalize model matrix. More... | |
void | resetModelMatrix (void) |
Resets the model matrix. More... | |
Protected Attributes | |
vector< Tucano::VertexAttribute > | vertex_attributes |
Array of generic attributes. More... | |
unsigned int | numberOfVertices = 0 |
Number of vertices in vertices array. More... | |
unsigned int | numberOfNormals = 0 |
Number of normals in normals array. More... | |
unsigned int | numberOfElements = 0 |
Number of indices in indices array. More... | |
unsigned int | numberOfTexCoords = 0 |
Number of texture coordinates in texCoords array. More... | |
unsigned int | numberOfColors = 0 |
Number of colors in colors array. More... | |
GLuint | index_buffer_id = 0 |
Index Buffer. More... | |
GLuint | vao_id = 0 |
Vertex Array Object ID (VAO is just a descriptor, does not contain any data) More... | |
bool | willTessellate = false |
Variable indicating if there will be tessellation. More... | |
std::shared_ptr< GLuint > | index_buffer_sptr = 0 |
Shared pointer for index buffer. More... | |
std::shared_ptr< GLuint > | vao_sptr = 0 |
Shared pointer for vertex array object. More... | |
Protected Attributes inherited from Tucano::Model | |
Eigen::Affine3f | model_matrix |
Model matrix, holds information about the models location and orientation. More... | |
Eigen::Vector3f | objectCenter |
Center of the mesh object. More... | |
Eigen::Vector3f | centroid |
Object's centroid (different from center of bounding box) More... | |
float | radius |
Radius of the mesh bounding sphere. More... | |
float | scale |
The normalization scale factor, scales the model matrix to fit the model inside a unit cube. More... | |
Eigen::Vector4f | default_color = Eigen::Vector4f (0.7, 0.7, 0.7, 1.0) |
Default color. More... | |
A common Mesh, usually containing triagles or points.
The Mesh class handles the buffers generation and usage. such as VBO. IBO. TBO... It also contains methods for simple meshes generation. (e.g. a quadrilateral or a cube) and a wavefront .obj loader. When a mesh is generated. geometrical computations are performed. detecting the center of the mesh through the axis-aligned bounding box and computing normalizating scale factors. The attribute locations are predefined in this class. being the location 0 used for Vertex Buffer. 1 for Normals Buffer. 2 for Color Buffer and 3 for TexCoord Buffer.
|
inline |
Default Constructor.
|
inlinevirtual |
Binds all buffers.
If there is a index buffer it will also be binded. Then, binds one buffer for each vertex attribute.
|
inline |
Creates and loads a new mesh attribute of 4 floats.
name | Name of the attribute. |
attrib | Array with new attribute. |
|
inline |
Creates and loads a new mesh attribute of 3 floats.
name | Name of the attribute. |
attrib | Array with new attribute. |
|
inline |
Creates and loads a new mesh attribute of 2 floats.
name | Name of the attribute. |
attrib | Array with new attribute. |
|
inline |
Sets the mesh as a Parallelpiped with given dimensions, scales so larger side is equal to 1.
x | Width |
y | Height |
z | Depth |
|
inline |
Sets the mesh as Unit Quad.
|
inline |
Returns a pointer to an attribute Given an attribute name, searches to see if it exists, if so, returns a pointer to it.
name | Attribute name |
|
inline |
Returns the number of elements (primitives such as triangles) of the mesh.
|
inline |
Returns the number of vertices in the mesh.
|
inline |
Returns wether an attribute exists or not.
name | Name of attribute to be queried. |
|
inline |
Load colors (r,g,b,a) as a vertex attribute.
clrs | Colors array. |
|
inline |
Load indices into indices array.
ind | Indices array. |
|
inline |
Load normals (x,y,z) as a vertex attribute.
norm | Normals list. |
|
inline |
Load tex coords (u,v) as a vertex attribute. Optionally normalizes coords in range [0,1].
tex | Texture coordinates array. |
normalize | If true normalizes the texcoords in range [0,1], otherwise does not normalize. |
|
inline |
Load vertices (x,y,z,w) and creates appropriate vertex attribute. The default attribute name is "in_Position". Computes bounding box and centroid and normalization factors (scale).
vert | Array of vertices. |
|
inlinevirtual |
Render the mesh triangles. The method binds the buffers, calls the method to render triangles, and then unbinds all buffers. Note that a index buffer is necessary.
|
inlinevirtual |
Call the draw method for rendering triangles. This method requires that a index buffer has been created.
|
inlinevirtual |
Render all vertices as a continous line loop.
|
inlinevirtual |
Call the draw method for rendering patches. This method requires that a index buffer has been created.
|
inlinevirtual |
Render only points without index buffer.
|
inline |
|
inline |
Resets all vertex attributes locations to -1.
|
inline |
|
inline |
|
inline |
Sets the location of a generic vertex attribute.
name | Name of the given attribute |
loc | Location of the attribute. |
|
inline |
Sets default attribute locations. vertex coords -> location 0 normals -> location 1 colors -> location 2 texCoords -> location 3.
|
inlinevirtual |
Unbinds all buffers.
|
protected |
Index Buffer.
|
protected |
Shared pointer for index buffer.
|
protected |
Number of colors in colors array.
|
protected |
Number of indices in indices array.
|
protected |
Number of normals in normals array.
|
protected |
Number of texture coordinates in texCoords array.
|
protected |
Number of vertices in vertices array.
|
protected |
Vertex Array Object ID (VAO is just a descriptor, does not contain any data)
|
protected |
Shared pointer for vertex array object.
|
protected |
Array of generic attributes.
|
protected |
Variable indicating if there will be tessellation.