Subversion Repositories gelsvn

Rev

Rev 400 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 400 Rev 594
-
 
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 IDBufferWireFrameRenderer.h
-
 
9
 * @brief Render a Manifold in wireframe. Not fast - but general.
-
 
10
 */
-
 
11
 
1
#ifndef __GLGRAPHICS_IDBUFFERWIREFRAMERENDERER_H__
12
#ifndef __GLGRAPHICS_IDBUFFERWIREFRAMERENDERER_H__
2
#define __GLGRAPHICS_IDBUFFERWIREFRAMERENDERER_H__
13
#define __GLGRAPHICS_IDBUFFERWIREFRAMERENDERER_H__
3
 
14
 
4
#include <GL/glew.h>
15
#include <GL/glew.h>
5
#include <CGLA/Vec3uc.h>
16
#include <CGLA/Vec3uc.h>
6
#include <CGLA/Vec3f.h>
17
#include <CGLA/Vec3f.h>
7
#include <HMesh/Manifold.h>
18
#include <HMesh/Manifold.h>
8
 
19
 
9
namespace GLGraphics
20
namespace GLGraphics
10
{
21
{
11
	/// Class for ID buffer based wireframe rendering. Handles all types of gons. Use with Manifold
22
	/// Class for ID buffer based wireframe rendering. Handles all types of gons. Use with Manifold
12
	class IDBufferWireframeRenderer
23
	class IDBufferWireframeRenderer
13
		{
24
		{
14
			HMesh::Manifold& mesh;
25
			HMesh::Manifold* mesh;
15
			
26
			
16
			GLint id_attrib;
27
			GLint id_attrib;
17
			GLint popp_attrib;
28
			GLint popp_attrib;
18
			GLint disp_attrib;
29
			GLint disp_attrib;
19
			int XSZ, YSZ;
30
			int XSZ, YSZ;
20
			float thickness;
31
			float thickness;
21
			float transition;
32
			float transition;
22
			
33
			
23
			GLuint vs,fs;
34
			GLuint vs,fs;
24
			GLuint line_prog;
35
			GLuint line_prog;
25
			GLuint idmap;
36
			GLuint idmap;
26
			
37
			
27
			GLuint vertex_buffername;
38
			GLuint vertex_buffername;
28
			GLuint colors_buffername;			
39
			GLuint colors_buffername;			
29
			GLuint line_id_attrib;
40
			GLuint line_id_attrib;
30
			GLuint line_vertex_pos;
41
			GLuint line_vertex_pos;
31
			GLuint line_disp_attrib;
42
			GLuint line_disp_attrib;
32
			GLuint line_opp_attrib;
43
			GLuint line_opp_attrib;
33
			
44
			
34
			int triangles, quads;
45
			int triangles, quads;
35
		public:
46
		public:
36
			
47
			
37
			CGLA::Vec3uc id_get(unsigned int i)
48
			CGLA::Vec3uc id_get(unsigned int i)
38
			{
49
			{
39
				i = i+1;
50
				i = i+1;
40
				return CGLA::Vec3uc(i&0xff, (i&0xff00)/256, (i&0xff0000)/65536);
51
				return CGLA::Vec3uc(i&0xff, (i&0xff00)/256, (i&0xff0000)/65536);
41
			}
52
			}
42
			
53
			
43
			IDBufferWireframeRenderer(int _XSZ, int _YSZ, 
54
			IDBufferWireframeRenderer(int _XSZ, int _YSZ, 
44
							  HMesh::Manifold& mesh,
55
							  HMesh::Manifold& mesh,
45
							  float _thickness=0.0, 
56
							  float _thickness=0.0, 
46
							  float _transition=1.8,
57
							  float _transition=1.8,
47
							  int atten_mode=0);
58
							  int atten_mode=0);
48
			
59
			
49
			~IDBufferWireframeRenderer();
60
			~IDBufferWireframeRenderer();
50
			
61
			
51
			void draw(const CGLA::Vec3f& color, 
62
			void draw(const CGLA::Vec3f& color, 
52
					const CGLA::Vec3f& clear_color);
63
					const CGLA::Vec3f& clear_color);
53
		};
64
		};
54
	
65
	
55
}
66
}
56
#endif
67
#endif
57
 
68