summaryrefslogtreecommitdiffstats
path: root/dev/a6-harold/edge_mesh.h
diff options
context:
space:
mode:
authorKT <tran0563@umn.edu>2021-09-06 19:07:33 -0500
committerKT <tran0563@umn.edu>2021-09-06 19:07:33 -0500
commitcccd3186305915d92b1751dc616979d64116a4aa (patch)
tree5dd4834daef547cd45fc0b643f44a10b581de0ad /dev/a6-harold/edge_mesh.h
parentAdded missing images for the A6 worksheet (diff)
downloadcsci4611-cccd3186305915d92b1751dc616979d64116a4aa.tar
csci4611-cccd3186305915d92b1751dc616979d64116a4aa.tar.gz
csci4611-cccd3186305915d92b1751dc616979d64116a4aa.tar.bz2
csci4611-cccd3186305915d92b1751dc616979d64116a4aa.tar.lz
csci4611-cccd3186305915d92b1751dc616979d64116a4aa.tar.xz
csci4611-cccd3186305915d92b1751dc616979d64116a4aa.tar.zst
csci4611-cccd3186305915d92b1751dc616979d64116a4aa.zip
Upload a1
Diffstat (limited to '')
-rw-r--r--dev/a6-harold/edge_mesh.h82
1 files changed, 0 insertions, 82 deletions
diff --git a/dev/a6-harold/edge_mesh.h b/dev/a6-harold/edge_mesh.h
deleted file mode 100644
index 5120d0b..0000000
--- a/dev/a6-harold/edge_mesh.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/** CSci-4611 Assignment 5: Art Render
- */
-
-#ifndef EDGE_MESH_H
-#define EDGE_MESH_H
-
-#include <mingfx.h>
-using namespace mingfx;
-
-#include <vector>
-
-
-/** This special kind of mesh stores two triangles that form a quadralateral
- along each edge of an existing mesh. The quad initially has a width=0, but
- when rendered, two of the vertices are extended along the surfaces normal
- direction, which creates a "fin" that can be drawn as a thick border. This
- can be used to create a silhouette edge renderer if the shader only extends
- the edges that lie along a silhouette of the mesh.
- */
-class EdgeMesh {
-public:
- EdgeMesh();
- virtual ~EdgeMesh();
-
- /// Creates two triangles along each edge of the mesh passed in.
- void CreateFromMesh(const Mesh &mesh);
-
- /// Saves the mesh data to the GPU - must be called with InitOpenGL or Draw.
- void UpdateGPUMemory();
-
- /// Num vertices in the edge mesh
- int num_vertices() const;
-
- /// Num triangles in the edge mesh
- int num_triangles() const;
-
- /// Access to vertex position by vertex number
- Point3 vertex(int vertexID) const;
-
- /// Access to vertex normal by vertex number
- Vector3 normal(int vertexID) const;
-
- /// Access to vertex color by vertex number
- Color color(int vertexID) const;
-
- /// Access to vertex texture coords by vertex number
- Point2 tex_coords(int textureUnit, int vertexID) const;
-
-
- /// Draws the mesh assuming a shader has already been bound.
- void Draw();
-
-private:
-
- // Some routines and variables are needed internally to construct the edge
- // mesh from a regular mesh.
-
- typedef std::map<std::pair<int,int>,int> EdgeMap;
- EdgeMap edgeMap;
-
- void addEdge(std::vector<Point3> *vertices,
- std::vector<Vector3> *normals,
- std::vector<Vector3> *leftNormals,
- std::vector<Vector3> *rightNormals,
- std::vector< std::vector<unsigned int> > *triangles,
- const Mesh &mesh, int v0, int v1, Vector3 n);
-
- std::vector<float> verts_; // vertex positions
- std::vector<float> norms_; // normals
- std::vector<unsigned int> indices_; // indices
- std::vector<float> leftNorms_; // normals of adjacent triangles
- std::vector<float> rightNorms_;
-
- GLuint vertexBuffer_;
- GLuint vertexArray_;
- GLuint elementBuffer_;
-
- bool gpuDirty_;
-};
-
-#endif
-