asteroidgen/src/Mesh.h

29 lines
842 B
C
Raw Normal View History

2017-10-29 05:28:00 +01:00
#pragma once
#include <vector>
#include <ostream>
#include <glm/vec3.hpp>
#include <glm/vec4.hpp>
2017-10-29 06:25:04 +01:00
typedef std::vector<glm::vec3> vec3v_t;
typedef std::vector<glm::vec2> vec2v_t;
typedef std::vector<glm::uvec3> uvec3v_t;
typedef std::vector<glm::uvec4> uvec4v_t;
2017-10-29 05:28:00 +01:00
2017-10-29 06:25:04 +01:00
void calculateNormals(const vec3v_t &vtx, uvec3v_t &tri, vec3v_t &normals);
void findEdges(const vec3v_t &vtx, uvec3v_t &tri, uvec4v_t &edges);
2017-10-29 05:28:00 +01:00
2017-10-29 06:25:04 +01:00
void moveToMean(vec3v_t &vtx);
2017-10-29 05:28:00 +01:00
2017-10-29 06:25:04 +01:00
void smooth(vec3v_t &vtx, const uvec3v_t &tri);
2017-10-29 05:28:00 +01:00
2017-10-29 06:25:04 +01:00
void saveAttrib(std::ostream &out, const char *prefix, vec3v_t &elements);
2017-10-29 05:28:00 +01:00
2017-10-29 06:25:04 +01:00
void saveAttrib(std::ostream &out, const char *prefix, vec2v_t &elements);
2017-10-29 05:28:00 +01:00
2017-10-29 06:25:04 +01:00
void saveFaces(std::ostream &out, const uvec3v_t &tris, size_t attribs);
2017-10-29 05:28:00 +01:00
2017-10-29 06:25:04 +01:00
void computeTangentBasis(vec3v_t & vertices, vec2v_t & uvs, vec3v_t & normals,
vec3v_t & tangents, vec3v_t & bitangents);