View difference between Paste ID: i4XxVjxW and M8ffNsVe
SHOW: | | - or go back to the newest paste.
1
#include <Windows.h>
2
3
#include <gl/glew.h>
4
#include <gl/glut.h>
5
6
#include <iostream>
7
8
static int wWidth = 800;
9
static int wHeight = 600;
10
static float yfov = 45.0f;
11
static float zNear = 1.0f;
12
static float zFar = 1600.0f;
13
14
static float red[] = {
15
	0.63f,
16
	0.06f,
17
	0.04f,
18
	1.0f
19
};
20
21
static float green[] = {
22
	0.15f,
23
	0.48f,
24
	0.09f,
25
	1.0f
26
};
27
28
static float white[] = {
29
	0.76f,
30
	0.75f,
31
	0.5f,
32
	1.0f
33
};
34
35
using namespace std;
36
37
void SetupLights(void);
38
39
void ReshapeWindow(int width, int height);
40
void Render(void);
41
42
int main(int argc, char *argv[])
43
{
44
45
	glutInit(&argc, argv);
46
	glewInit();
47
48
	glutInitDisplayMode(GLUT_DEPTH | GLUT_RGBA | GLUT_DOUBLE);
49
	glutInitWindowSize(wWidth, wHeight);
50
	glutInitWindowPosition(100, 100);
51
52
	glutCreateWindow("wtf?");
53
54
	glutReshapeFunc(ReshapeWindow);
55
	glutDisplayFunc(Render);
56
57
	glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
58
	glEnable(GL_CULL_FACE);
59
	glCullFace(GL_BACK);
60
	
61
	SetupLights();
62
63
	glutMainLoop();
64
65
66
}
67
68
void SetupLights(void)
69
{
70
71
	glEnable(GL_LIGHTING);
72
73
	float lightPosition[] = {
74
		278.0f,
75
		425.0f,
76
		279.5f,
77
		0.0f
78
	};
79
80
	float lightIntensity[] = {
81
		0.75f,
82
		0.75f,
83
		0.75f,
84
		1.0f
85
	};
86
87
	float lightDirection[] = {
88
		0.0f,
89
		-1.0f,
90
		0.0f,
91
		0.0f // i think w component is not needed her but w/e
92
	};
93
94
	
95
96
	glLightfv(GL_LIGHT0, GL_POSITION, lightPosition);
97
	glLightfv(GL_LIGHT0, GL_AMBIENT_AND_DIFFUSE, lightIntensity);
98
	glLightfv(GL_LIGHT0, GL_SPECULAR, lightIntensity);
99
100-
	//glLightf(GL_LIGHT0, GL_SPOT_CUTOFF, 120.0f);
100+
101
	//glLightf(GL_LIGHT0, GL_SPOT_CUTOFF, 170.0f);
102
	//glLightf(GL_LIGHT0, GL_SPOT_EXPONENT, 128.0f);
103
104
	//glLighti(GL_LIGHT0, GL_CONSTANT_ATTENUATION, 1);
105
	//glLighti(GL_LIGHT0, GL_LINEAR_ATTENUATION, 1);
106
	//glLighti(GL_LIGHT0, GL_QUADRATIC_ATTENUATION, 1);
107
108
	glEnable(GL_LIGHT0);
109
110
}
111
112
void ReshapeWindow(int width, int height)
113
{
114
115
	float ratio = (float) width / height;
116
117
	glMatrixMode(GL_PROJECTION);
118
119
	gluPerspective(yfov, ratio, zNear, zFar);
120
	gluLookAt(278.0f, 273.0f, -800.0f, 278.0f, 273.0f, -799.0f, 0.0f, 1.0f, 0.0f);
121
122
	glMatrixMode(GL_MODELVIEW);
123
124
}
125
126
void Render(void)
127
{
128
129
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
130
131
	
132
	glBegin(GL_TRIANGLES);
133
		
134
		// CEILING
135
136
		glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, white);
137
		glMaterialfv(GL_FRONT, GL_SPECULAR, white);
138
		
139
		glNormal3f(0.0f, -1.0f, 0.0f);
140
141
		glVertex3f(556.0f, 548.8f, 0.0f);
142
		glVertex3f(556.0f, 548.0f, 592.2f);
143
		glVertex3f(0.0f, 548.8f, 0.0f);
144
145
		glVertex3f(556.0f, 548.0f, 592.2f);
146
		glVertex3f(0.0f, 548.8f, 592.2f);
147
		glVertex3f(0.0f, 548.8f, 0.0f);
148
149
		// FLOOR
150
151
		glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, white);
152
		glMaterialfv(GL_FRONT, GL_SPECULAR, white);
153
154
		glNormal3f(0.0f, 1.0f, 0.0f);
155
156
		glVertex3f(552.8, 0.0f, 0.0f);
157
		glVertex3f(0.0f, 0.0f, 0.0f);
158
		glVertex3f(549.6f, 0.0f, 592.2f);
159
160
		glVertex3f(0.0f, 0.0f, 0.0f);
161
		glVertex3f(0.0f, 0.0f, 592.2f);
162
		glVertex3f(549.6f, 0.0f, 592.2f);
163
164
		// BACK WALL
165
166
		glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, white);
167
		glMaterialfv(GL_FRONT, GL_SPECULAR, white);
168
169
		glNormal3f(0.0f, 0.0f, -1.0f);
170
171
		glVertex3f(549.6, 0.0f, 592.2f);
172
		glVertex3f(0.0f, 0.0f, 592.2f);
173
		glVertex3f(556.0f, 548.8f, 592.2f);
174
175
		glVertex3f(0.0f, 0.0f, 592.2f);
176
		glVertex3f(0.0f, 548.8f, 592.2f);
177
		glVertex3f(556.0f, 548.8f, 592.2f);
178
179
		// LEFT WALL
180
181
		glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, red);
182
		glMaterialfv(GL_FRONT, GL_SPECULAR, red);
183
184
		glNormal3f(-1.0f, 0.0f, 0.0f);
185
186
		glVertex3f(552.8f, 0.0f, 0.0f);
187
		glVertex3f(549.6f, 0.0f, 592.2f);
188
		glVertex3f(556.0f, 548.8f, 0.0f);
189
190
		glVertex3f(549.6f, 0.0f, 592.2f);
191
		glVertex3f(556.0f, 548.8f, 592.2f);
192
		glVertex3f(556.0f, 548.8f, 0.0f);
193
194
		// RIGHT WALL
195
196
		glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, green);
197
		glMaterialfv(GL_FRONT, GL_SPECULAR, green);
198
199
		glNormal3f(1.0f, 0.0f, 0.0f);
200
201
		glVertex3f(0.0f, 0.0f, 592.2f);
202
		glVertex3f(0.0f, 0.0f, 0.0f);
203
		glVertex3f(0.0f, 548.8f, 592.2f);
204
205
		glVertex3f(0.0f, 0.0f, 0.0f);
206
		glVertex3f(0.0f, 548.8f, 0.0f);
207
		glVertex3f(0.0f, 548.8f, 592.2f);
208
209
	glEnd();
210
	
211
	glutSwapBuffers();
212
213
}