-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathworld.cpp
125 lines (104 loc) · 2.83 KB
/
world.cpp
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
#include <GLFW/glfw3.h>
#include <GL/gl.h>
#include <cmath>
#include <iostream>
void drawLetterY() {
glBegin(GL_LINES);
glVertex3f(-0.5f, 0.5f, 0.0f);
glVertex3f(0.0f, 0.0f, 0.0f);
glVertex3f(0.5f, 0.5f, 0.0f);
glVertex3f(0.0f, 0.0f, 0.0f);
glVertex3f(-0.25f, -0.5f, 0.0f);
glVertex3f(0.25f, -0.5f, 0.0f);
glEnd();
}
void drawLetterT() {
glBegin(GL_LINES);
glVertex3f(-0.5f, 0.5f, 0.0f);
glVertex3f(0.5f, 0.5f, 0.0f);
glVertex3f(0.0f, 0.5f, 0.0f);
glVertex3f(0.0f, -0.5f, 0.0f);
glEnd();
}
void drawLetterE() {
glBegin(GL_LINES);
glVertex3f(-0.5f, 0.5f, 0.0f);
glVertex3f(-0.5f, -0.5f, 0.0f);
glVertex3f(-0.5f, 0.0f, 0.0f);
glVertex3f(0.5f, 0.0f, 0.0f);
glVertex3f(-0.5f, 0.5f, 0.0f);
glVertex3f(0.5f, 0.5f, 0.0f);
glEnd();
}
void drawLetterX() {
glBegin(GL_LINES);
glVertex3f(-0.5f, 0.5f, 0.0f);
glVertex3f(0.5f, -0.5f, 0.0f);
glVertex3f(0.5f, 0.5f, 0.0f);
glVertex3f(-0.5f, -0.5f, 0.0f);
glEnd();
}
void drawLetterT_2() {
drawLetterT();
}
void setupOpenGL() {
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
glEnable(GL_DEPTH_TEST);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0f, 800.0f / 600.0f, 0.1f, 100.0f);
glMatrixMode(GL_MODELVIEW);
}
void updateColor(float &r, float &g, float &b, float delta) {
r += delta;
g += delta;
b += delta;
if (r > 1.0f) r = 0.0f;
if (g > 1.0f) g = 0.0f;
if (b > 1.0f) b = 0.0f;
}
int main() {
if (!glfwInit()) {
std::cerr << "Failed to initialize GLFW!" << std::endl;
return -1;
}
GLFWwindow *window = glfwCreateWindow(800, 600, "3D 'ytext' with RGB", nullptr, nullptr);// you can replace it with your own name too
if (!window) {
std::cerr << "Failed to create window!" << std::endl;
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);
setupOpenGL();
float r = 0.0f, g = 0.0f, b = 0.0f;
float delta = 0.005f;
while (!glfwWindowShouldClose(window)) {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glTranslatef(-1.5f, 0.0f, -6.0f);
glColor3f(r, g, b);
drawLetterY();
glLoadIdentity();
glTranslatef(-0.5f, 0.0f, -6.0f);
glColor3f(r, g, b);
drawLetterT();
glLoadIdentity();
glTranslatef(0.5f, 0.0f, -6.0f);
glColor3f(r, g, b);
drawLetterE();
glLoadIdentity();
glTranslatef(1.5f, 0.0f, -6.0f);
glColor3f(r, g, b);
drawLetterX();
glLoadIdentity();
glTranslatef(2.5f, 0.0f, -6.0f);
glColor3f(r, g, b);
drawLetterT_2();
updateColor(r, g, b, delta);
glfwSwapBuffers(window);
glfwPollEvents();
}
glfwDestroyWindow(window);
glfwTerminate();
return 0;
}