-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbasic_gl_shapes.h
134 lines (112 loc) · 5.77 KB
/
basic_gl_shapes.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#ifndef BASIC_GL_SHAPES_H
#define BASIC_GL_SHAPES_H
#include "glut.h"
// vertices arrays:
namespace
{
GLfloat vertices[] = { 1, 1, 1, -1, 1, 1, -1,-1, 1, 1,-1, 1, // v0,v1,v2,v3 (front)
1, 1, 1, 1,-1, 1, 1,-1,-1, 1, 1,-1, // v0,v3,v4,v5 (right)
1, 1, 1, 1, 1,-1, -1, 1,-1, -1, 1, 1, // v0,v5,v6,v1 (top)
-1, 1, 1, -1, 1,-1, -1,-1,-1, -1,-1, 1, // v1,v6,v7,v2 (left)
-1,-1,-1, 1,-1,-1, 1,-1, 1, -1,-1, 1, // v7,v4,v3,v2 (bottom)
1,-1,-1, -1,-1,-1, -1, 1,-1, 1, 1,-1 }; // v4,v7,v6,v5 (back)
GLfloat vertices2[] = { 0, 0, 1, 0,-0.5, 1, 1, 0, 1, // (front)
0,-0.5, 1, 0,-0.5,-1, 1, 0, -1, 1, 0, 1, // (right)
1, 0, 1, 1, 0, -1, 0, 0, -1, 0, 0, 1, // (top)
0, 0, 1, 0, 0, -1, 0,-0.5,-1, 0,-0.5,1, // (left)
0,-0.5,-1, 1, 0, -1, 0, 0, -1 };// (back)
GLfloat vertices3[] = { 0, 0, 1, 0,0.5, 1, 1, 0, 1, // (front)
0,0.5, 1, 0,0.5,-1, 1, 0, -1, 1, 0, 1, // (right)
1, 0, 1, 1, 0, -1, 0, 0, -1, 0, 0, 1, // (top)
0, 0, 1, 0, 0, -1, 0,0.5,-1, 0,0.5,1, // (left)
0,0.5,-1, 1, 0, -1, 0, 0, -1 };// (back)
// normals arrays:
GLfloat normals[] = { 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, // v0,v1,v2,v3 (front)
1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, // v0,v3,v4,v5 (right)
0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, // v0,v5,v6,v1 (top)
-1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, // v1,v6,v7,v2 (left)
0,-1, 0, 0,-1, 0, 0,-1, 0, 0,-1, 0, // v7,v4,v3,v2 (bottom)
0, 0,-1, 0, 0,-1, 0, 0,-1, 0, 0,-1 }; // v4,v7,v6,v5 (back)
GLfloat normals2[] = { 0, 0, 1, 0, 0, 1, 0, 0, 1, // (front)
1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, // (right)
0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, // (top)
-1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, // (left)
0, 0,-1, 0, 0,-1, 0, 0,-1 };// (back)
GLfloat normals3[] = { 0, 0, 1, 0, 0, 1, 0, 0, 1, // (front)
1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, // (right)
0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, // (top)
-1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, // (left)
0, 0,-1, 0, 0,-1, 0, 0,-1 };// (back)
// colors arrays:
GLfloat colors[] = { 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, // v0,v1,v2,v3 (front)
1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, // v0,v3,v4,v5 (right)
1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, // v0,v5,v6,v1 (top)
1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, // v1,v6,v7,v2 (left)
1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, // v7,v4,v3,v2 (bottom)
1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1 }; // v4,v7,v6,v5 (back)
GLfloat colors2[] = { 1, 0, 1, 1, 0, 1, 1, 0, 1, // (front)
1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, // (right)
1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, // (top)
1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, // (left)
1, 0, 1, 1, 0, 1, 1, 0, 1 };// (back)
// index arrays of vertexes:
GLubyte indices[] = { 0, 1, 2, 2, 3, 0, // front
4, 5, 6, 6, 7, 4, // right
8, 9,10, 10,11, 8, // top
12,13,14, 14,15,12, // left
16,17,18, 18,19,16, // bottom
20,21,22, 22,23,20 }; // back
GLubyte indices2[] = { 0, 1, 2, // front
3, 4, 5, 3, 5, 6, // right
7, 8, 9, 7, 9, 10, // top
11,12,13, 11,13,14, // left
17,15,16 }; // back
GLubyte indices3[] = { 0, 2, 1, // front
3, 6, 5, 3, 5, 4, // right
7, 8, 9, 7, 9, 10, // top, right
11,14,13, 11,13,12, // left
15,17,16 }; // back
// textures:
GLfloat textures[] = { 0.0,0.0, 1.0,0.0, 1.0,1.0, 0.0, 1.0,
0.0,0.0, 1.0,0.0, 1.0,1.0, 0.0, 1.0,
0.0,0.0, 1.0,0.0, 1.0,1.0, 0.0, 1.0,
0.0,0.0, 1.0,0.0, 1.0,1.0, 0.0, 1.0,
0.0,0.0, 1.0,0.0, 1.0,1.0, 0.0, 1.0,
0.0,0.0, 1.0,0.0, 1.0,1.0, 0.0, 1.0
};
GLfloat textures2[] = { 0.0,0.0, 0.5,0.0, 1.0,0.25, 1.0,0.75, 0.5,1.0, 0.0,1.0,
0.0,0.0, 1.0,0.0, 1.0,1.0, 0.0, 1.0,
0.0,0.0, 1.0,0.0, 1.0,1.0, 0.0, 1.0,
0.0,0.0, 1.0,0.0, 1.0,1.0, 0.0, 1.0,
0.0,0.0, 1.0,0.0, 1.0,1.0, 0.0, 1.0,
0.0,0.0, 1.0,0.0, 1.0,1.0, 0.0, 1.0
};
void Triang()
{
glVertexPointer(3,GL_FLOAT,0,vertices2);
glNormalPointer(GL_FLOAT,0,normals2);
glColorPointer(3,GL_FLOAT,0,colors2);
glPushMatrix();
glDrawElements(GL_TRIANGLES, 18, GL_UNSIGNED_BYTE, indices2);
glPopMatrix();
}
void Triang2()
{
glVertexPointer(3,GL_FLOAT,0,vertices3);
glNormalPointer(GL_FLOAT,0,normals2);
glColorPointer(3,GL_FLOAT,0,colors2);
glPushMatrix();
glDrawElements(GL_TRIANGLES, 18, GL_UNSIGNED_BYTE, indices3);
glPopMatrix();
}
void Block()
{
glVertexPointer(3,GL_FLOAT,0,vertices);
glNormalPointer(GL_FLOAT,0,normals);
glColorPointer(3,GL_FLOAT,0,colors);
glPushMatrix();
glDrawElements(GL_TRIANGLES, 36, GL_UNSIGNED_BYTE, indices);
glPopMatrix();
}
}
#endif