-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathScene.cpp
More file actions
59 lines (53 loc) · 1.3 KB
/
Scene.cpp
File metadata and controls
59 lines (53 loc) · 1.3 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
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
/*
* File: Scene.cpp
* Author: evgeny
*
* Created on 5 марта 2018 г., 22:42
*/
#include "Scene.h"
Scene::Scene() {
numOfMeshes = 0;
}
Scene::Scene(const Scene& orig) {
}
Scene::~Scene() {
for (GLuint i = 0; i < numOfMeshes; i++)
{
meshes[i]->~Mesh();
}
delete meshes;
}
void Scene::add(Mesh *mesh) {
if (numOfMeshes > 0)
{
Mesh **cpyMeshes = meshes;
meshes = new Mesh *[numOfMeshes + 1];
for (int i = 0; i < numOfMeshes; i++)
{
meshes[i] = cpyMeshes[i];
}
delete cpyMeshes;
}
else
{
meshes = new Mesh *[1];
}
meshes[numOfMeshes] = mesh;
numOfMeshes++;
}
void Scene::draw(Shader &shader) {
GLint viewLoc = glGetUniformLocation(shader.Program, "view");
GLint projLoc = glGetUniformLocation(shader.Program, "projection");
glUniformMatrix4fv(projLoc, 1, GL_FALSE, glm::value_ptr(projection));
glUniformMatrix4fv(viewLoc, 1, GL_FALSE, glm::value_ptr(view));
if (numOfMeshes)
for (GLuint i = 0; i < numOfMeshes; i++)
{
meshes[i]->draw(shader);
}
}