asteroidgen/src/Mesh.h

31 lines
950 B
C++

#pragma once
#include <vector>
#include <ostream>
#include <glm/vec3.hpp>
#include <glm/vec4.hpp>
void calculateNormals(const std::vector<glm::vec3> &vtx,
std::vector<glm::uvec3> &tri, std::vector<glm::vec3> &normals);
void moveToMean(std::vector<glm::vec3> &vtx);
void smooth(std::vector<glm::vec3> &vtx, const std::vector<glm::uvec3> &tri);
void saveAttrib(std::ostream &out, const char *prefix,
std::vector<glm::vec3> &elements);
void saveAttrib(std::ostream &out, const char *prefix,
std::vector<glm::vec2> &elements);
void saveFaces(std::ostream &out, const std::vector<glm::uvec3> &tris,
size_t attribs);
void calculateEdges(const std::vector<glm::vec3> &vtx,
std::vector<glm::uvec3> &tri, std::vector<glm::uvec4> &edges);
void computeTangentBasis(std::vector<glm::vec3> & vertices,
std::vector<glm::vec2> & uvs, std::vector<glm::vec3> & normals,
std::vector<glm::vec3> & tangents, std::vector<glm::vec3> & bitangents);