Subversion Repositories gelsvn

Rev

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

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