Subversion Repositories gelsvn

Rev

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

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