-
Notifications
You must be signed in to change notification settings - Fork 1
/
scene.cpp
71 lines (56 loc) · 1.47 KB
/
scene.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
#include "scene.h"
Scene::Scene()
{
//initializeOpenGLFunctions();
//shader.compile("../Renderer/shader.vert","../Renderer/shader.frag");
}
void Scene::render(Shader &shader)
{
shader.program.bind();
shader.program.setUniformValue("projectionMatrix",camera.projection());
shader.program.setUniformValue("viewMatrix",camera.view());
//foreach(Mesh mesh, meshes)
QMap<QString,Mesh>::iterator it=meshes.begin();
while(it!=meshes.end())
{
QMatrix4x4 modelViewMatrix = camera.view() * it.value().modelMatrix;
QMatrix3x3 normalMatrix = modelViewMatrix.normalMatrix();
QMatrix4x4 MVP = camera.projection() * modelViewMatrix;
shader.program.setUniformValue("N",normalMatrix);
shader.program.setUniformValue("MVP",MVP);
it.value().draw(shader);
it++;
}
}
void Scene::addMesh(Mesh &mesh, const QString &meshName)
{
meshes.insert(meshName,mesh);
//meshes[meshName].setup();
}
void Scene::buildMesh(QVector<Vertex> &v, QVector<unsigned int> &i)
{
Mesh mesh(v,i);
meshes.insert("",mesh);
//meshes[""].setup();
}
void Scene::deleteMesh(const QString &meshName)
{
meshes.remove(meshName);
}
void Scene::clear()
{
meshes.clear();
}
Mesh& Scene::mesh(QString meshName)
{
QMap<QString,Mesh>::iterator i=meshes.find(meshName);
return i.value();
}
Mesh& Scene::activeMesh()
{
return meshes.first();
}
const QList<QString> Scene::meshList()
{
return meshes.keys();
}