Subversion Repositories gelsvn

Rev

Rev 601 | Rev 656 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
594 jab 1
/* ----------------------------------------------------------------------- *
2
 * This file is part of GEL, http://www.imm.dtu.dk/GEL
3
 * Copyright (C) the authors and DTU Informatics
4
 * For license and list of authors, see ../../doc/intro.pdf
5
 * ----------------------------------------------------------------------- */
6
 
7
/**
8
 * @file draw.h
9
 * @brief Draw various GEL entities.
10
 */
11
 
167 jab 12
#ifndef __GLGRAPHICS_DRAW_H_
13
#define __GLGRAPHICS_DRAW_H_
14
 
601 jab 15
#include "../Geometry/TriMesh.h"
16
#include "../Geometry/AABox.h"
17
#include "../Geometry/OBox.h"
18
#include "../Geometry/BoundingINode.h"
19
#include "../Geometry/BoundingLNode.h"
20
#include "../Geometry/BoundingTree.h"
167 jab 21
 
594 jab 22
namespace HMesh
23
{
24
    class Manifold;
25
}
26
 
299 jrf 27
namespace GLGraphics
28
{
432 jab 29
	/// Draw an indexed face set (just a triangle list) with normals computed on the fly.
30
	void draw(const Geometry::IndexedFaceSet& geometry);
31
 
396 jab 32
	/// Draw a triangles mesh. Inefficient function that should be compiled into a display list.
33
	void draw(const Geometry::TriMesh& tm, bool per_vertex_norms=true);
34
 
441 jab 35
	/// Load textures if available
36
	void load_textures(Geometry::TriMesh& tm);	
37
 
396 jab 38
	/// Draw a HMesh Manifold. Inefficient and should be compiled into display list
594 jab 39
	void draw(const HMesh::Manifold& m, bool per_vertex_norms=true);
368 jrf 40
 
396 jab 41
 
42
	/// Draw an axis aligned bounding box
43
	void draw(const Geometry::AABox& box);
44
 
45
	/// Draw an oriented bounding box
46
	void draw(const Geometry::OBox& box);
47
 
400 jab 48
	/// Draw an object of type T which contains only triangles as wireframe. In practice T = Manifold or TriMesh.
396 jab 49
	template<typename T>
492 jrf 50
	inline void draw_triangles_in_wireframe(T& m, bool per_vertex_norms, const CGLA::Vec3f& line_color);
51
 
52
  /// Draw an object of type T as wireframe.  In practice T = Manifold or TriMesh.
396 jab 53
	template<class T>
594 jab 54
	void draw_wireframe_oldfashioned(const T& m, bool per_vertex_norms, const CGLA::Vec3f& line_color);
396 jab 55
 
56
 
57
	template<class BoxType>
299 jrf 58
	void draw(const Geometry::BoundingINode<BoxType>& node, int level, int max_level);
396 jab 59
	template<class BoxType>
299 jrf 60
    void draw(const Geometry::BoundingLNode<BoxType>& node, int level, int max_level);
396 jab 61
	template<class BoxType>
299 jrf 62
    void draw(const Geometry::BoundingTree<BoxType>& tree, int max_level = 1e6);
396 jab 63
 
299 jrf 64
}
167 jab 65
#endif