-
Notifications
You must be signed in to change notification settings - Fork 0
/
Intro3D.cpp
115 lines (89 loc) · 2.67 KB
/
Intro3D.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
#include <SFML/Graphics.hpp>
#include <cmath>
#include <TDEngine/Engine.hpp>
#include <glad/glad.h>
#include <GLUT/glut.h>
using namespace sf;
vec2 size = {1200, 700};
string name = "OpenGL FPS";
vec3 bgColor = {40,200,250};
bool hideCursor = true,
cameraEnabled = true;
float vert[] = {
1, 0, 1,
1, 0, -1,
-1, 0, -1,
-1, 0, 1
};
void init(){
gladLoadGL();
}
void showDemo(){
float vert[] = {
1, 0, 1,
1, 0, -1,
-1, 0, -1,
-1, 0, 1
};
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_FLOAT, 0, &vert);
for(int i = -5; i < 5; i++){
for(int j = -5; j < 5; j++){
glPushMatrix();
if((i+j) % 2 == 0) glColor3f(0, 0.5, 0);
else glColor3f(1, 1, 1);
glTranslatef(i*2, 0, j*2);
glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
glPopMatrix();
}
}
glDisableClientState(GL_VERTEX_ARRAY);
}
void game_init(){
;
}
void draw(){
showDemo();
}
Camera camera = Camera({0, 10, 0});
float elapsedTime = 1;
int main(){
ContextSettings contextSettings;
contextSettings.depthBits = 24;
sf::RenderWindow window(sf::VideoMode(size.x, size.y), name, sf::Style::Default, contextSettings);
window.setVerticalSyncEnabled(true);
if(hideCursor) window.setMouseCursorVisible(false);
window.setActive(true);
init();
glEnable(GL_DEPTH_TEST);
glDepthMask(GL_TRUE);
glViewport(0, 0, size.x, size.y);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glFrustum(-size.x/size.y, size.x/size.y, -1,1, 1, 1000);
glTranslatef(0, 0, -1);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
game_init();
//window.setActive(false);
Clock clock;
Event event;
while(window.isOpen()){
while(window.pollEvent(event)){
if (event.type == Event::Closed) window.close();
}
elapsedTime = clock.getElapsedTime().asMilliseconds();
if(cameraEnabled) camera.update(&window);
//window.setActive(true);
glClearColor(bgColor.x / 255.f, bgColor.y / 255.f, bgColor.z / 255.f, 1);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
if(cameraEnabled) gluLookAt(camera.pos.x, camera.pos.y, camera.pos.z, camera.pos.x-sin(camera.rot.x/180*M_PI), camera.pos.y+tan(camera.rot.y/180*M_PI), camera.pos.z-cos(camera.rot.x/180*M_PI), 0, 1, 0);
glPushMatrix();
draw();
glPopMatrix();
//window.setActive(false);
window.display();
}
}