-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathskybox.cpp
More file actions
64 lines (60 loc) · 1.8 KB
/
Copy pathskybox.cpp
File metadata and controls
64 lines (60 loc) · 1.8 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
#include <iostream>
#include <vector>
#include <glm/glm.hpp>
#include <glm/gtc/constants.hpp>
#include <GL/glew.h>
#include "global.h"
#include "skybox.h"
using namespace glm;
void Skybox::setup()
{
setupVertices();
setupVAO();
}
void Skybox::render()
{
for (int i = 0; i < 6; i++)
glDrawArrays(GL_TRIANGLE_FAN, i * 4, 4);
}
void Skybox::setupVertices()
{
const vec3 vertices[6][4] = {
// Front
{vec3(1.f, -1.f, 1.f), vec3(-1.f, -1.f, 1.f), vec3(-1.f, 1.f, 1.f), vec3(1.f, 1.f, 1.f),},
// Up
{vec3(-1.f, 1.f, -1.f), vec3(1.f, 1.f, -1.f), vec3(1.f, 1.f, 1.f), vec3(-1.f, 1.f, 1.f),},
// Right
{vec3(1.f, -1.f, -1.f), vec3(1.f, -1.f, 1.f), vec3(1.f, 1.f, 1.f), vec3(1.f, 1.f, -1.f),},
// Back
{vec3(-1.f, -1.f, -1.f), vec3(1.f, -1.f, -1.f), vec3(1.f, 1.f, -1.f), vec3(-1.f, 1.f, -1.f),},
// Down
{vec3(-1.f, -1.f, 1.f), vec3(1.f, -1.f, 1.f), vec3(1.f, -1.f, -1.f), vec3(-1.f, -1.f, -1.f),},
// Left
{vec3(-1.f, -1.f, 1.f), vec3(-1.f, -1.f, -1.f), vec3(-1.f, 1.f, -1.f), vec3(-1.f, 1.f, 1.f),},
};
const vec3 normals[6] = {
vec3(0.f, 0.f, -1.f),
vec3(0.f, -1.f, 0.f),
vec3(-1.f, 0.f, 0.f),
vec3(0.f, 0.f, 1.f),
vec3(0.f, 1.f, 0.f),
vec3(1.f, 0.f, 0.f),
};
const vec2 offsets[6] = {
vec2(3.f, 1.f), vec2(1.f, 0.f), vec2(2.f, 1.f), vec2(1.f, 1.f), vec2(1.f, 2.f), vec2(0.f, 1.f),
};
const float l = 1.f / 256.f, h = 1.f - l;
const vec2 texCoords[4] = {
//vec2(0.f, 1.f), vec2(1.f, 1.f), vec2(1.f, 0.f), vec2(0.f, 0.f),
vec2(l, h), vec2(h, h), vec2(h, l), vec2(l, l),
};
const vec2 region(1.f / 4.f, 1.f / 3.f);
for (int i = 0; i != 6; i++) {
for (int j = 0; j != 4; j++) {
this->vertices.push_back(vertices[i][j]);
this->normals.push_back(normals[i]);
this->texCoords.push_back((texCoords[j] + offsets[i]) * region);
//this->texCoords.push_back(texCoords[j]);
}
}
}