-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathEight.cpp
More file actions
131 lines (111 loc) · 3.26 KB
/
Eight.cpp
File metadata and controls
131 lines (111 loc) · 3.26 KB
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
#include "Eight.h"
Eight::Eight( GLfloat xPos,GLfloat yPos,GLfloat zPos): Sprite()
{
x=xPos;
y=yPos;
z=zPos;
this->loadTexture();
}
Eight::~Eight()
{
//dtor
}
void Eight::cube()
{
glBegin(GL_QUADS); // start drawing a polygon (4 sided)
glNormal3f(0.0f,0.0f,-1.0f);
glTexCoord2f(0.0f, 1.0f);
glVertex3f(-1.0f, 1.0f, 0.0f); // Top Left
glTexCoord2f(1.0f, 1.0f);
glVertex3f( 1.0f, 1.0f, 0.0f); // Top Right
glTexCoord2f(1.0f, 0.0f);
glVertex3f( 1.0f,-1.0f, 0.0f); // Bottom Right
glTexCoord2f(0.0f, 0.0f);
glVertex3f(-1.0f,-1.0f, 0.0f); // Bottom Left
glEnd(); // done with the polygon
}
void Eight::triangle()
{
glBegin(GL_POLYGON); // start drawing a polygon
glNormal3f(0.0f,0.0f,-1.0f);
glVertex3f( 0.0f, 0.2f, 0.0f); // Top
glVertex3f( 1.0f,-1.0f, 0.0f); // Bottom Right
glVertex3f(-1.0f,-1.0f, 0.0f); // Bottom Left
glEnd();
}
void Eight::digitalStrut()
{
glPushMatrix();
glScalef( 0.1, 0.2, 0.2 );
glPushMatrix();
glTranslatef(0.0f,2.5f,0.0f); // Move up 3
glScalef( 1.0, 0.5, 1.0 );
triangle();
glPopMatrix();
glPushMatrix();
glScalef( 1.0, 2.0, 1.0 );
cube();
glPopMatrix();
glPushMatrix();
glTranslatef(0.0f,-2.5f,0.0f); // Move up 3
glRotatef(180.0f, 0.0f, 0.0f,1.0f);
glScalef( 1.0, 0.5, 1.0 );
triangle();
glPopMatrix();
glPopMatrix();
}
void Eight::draw()
{
glPushMatrix();
glBindTexture(GL_TEXTURE_2D, this->texture);
GLfloat ambient[] = { 0.0, 0.0, 0.0, 1.0 };
GLfloat diffuse[] = { 0.0, 0.0, 0.0, 1.0 };
GLfloat specular[] = { 0.2, 0.2, 0.2, 1.0 };
GLfloat shininess[] = { 00.0 };
glMaterialfv(GL_FRONT, GL_AMBIENT, ambient);
glMaterialfv(GL_FRONT, GL_DIFFUSE, diffuse);
glMaterialfv(GL_FRONT, GL_SPECULAR, specular);
glMaterialfv(GL_FRONT, GL_SHININESS, shininess);
move();
//VERTICAL STRUTS
//TOP
digitalStrut(); //Top Right
glTranslatef(1.0f,0.0f,0.0f);
digitalStrut(); //Top Left
//BOTTOM
glTranslatef(0.0f,1.0f,0.0f); //Bottom
digitalStrut(); //Bottom Right
glTranslatef(-1.0f,0.0f,0.0f);
digitalStrut(); //Bottom Left
//HORIZONTAL STRUTS
glRotatef(90.0f,0.0f,0.0f,1.0f); //Draw horizontal struts
glTranslatef(0.5f,-0.5f,0.0f); //Top
digitalStrut();
glTranslatef(-1.0f,0.0f,0.0f); //Middle
digitalStrut();
glTranslatef(-1.0f,0.0f,0.0f); //Bottom
digitalStrut();
glPopMatrix();
}
int Eight::loadTexture()
{
// Load Bitmaps And Convert To Texture
this->texture = SOIL_load_OGL_texture
(
"data/eight.bmp",
// "data/eight.bmp",
SOIL_LOAD_AUTO,
SOIL_CREATE_NEW_ID,
SOIL_FLAG_INVERT_Y
);
if(this->texture == 0)
{
printf( "SOIL loading error: '%s'\n", SOIL_last_result());
return false;
}
// Typical Texture Generation Using Data From The Bitmap
glBindTexture(GL_TEXTURE_2D, this->texture);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
return true; // Return Success
}