Bbop-Library 0.4.1-alpha
Opengl library to build 2d apps and game that implement a light system named Lumop
 
Loading...
Searching...
No Matches
sceneClass.h
Go to the documentation of this file.
1/*
2 * sceneClass.h
3 *
4 * Ce programme est distribué sous les termes de la Licence Publique
5 * Générale GNU, version 3.0, telle que publiée par la Free Software
6 * Foundation. Consultez la Licence Publique Générale GNU pour plus de
7 * détails.
8 *
9 * Vous devez avoir reçu une copie de la Licence Publique Générale GNU
10 * en même temps que ce programme. Si ce n'est pas le cas, consultez
11 * <https://www.gnu.org/licenses/>.
12 */
13
14#ifndef SCENE_CLASS_H
15#define SCENE_CLASS_H
16
17#include <GL/glew.h>
18#include <GLFW/glfw3.h>
19#include <iostream>
20#include <variant>
21#include <vector>
22#include <glm/glm.hpp>
23#include <glm/gtc/type_ptr.hpp>
24#include <glm/gtc/matrix_transform.hpp>
25
26#include "cameraClass.h"
27#include "bbopMathClass.h"
28#include "spriteClass.h"
29#include "shaderClass.h"
30#include "shaders.h"
31#include "bbopGlobal.h"
32#include "lightClass.h"
33
35 alignas(8) glm::vec2 pos; // Position de la source de lumière (2D)
36 alignas(4) float intensity; // Intensité de la lumière
37 alignas(4) float constantAttenuation; // Attnuation constante
38 alignas(16) glm::vec3 color; // Couleur de la lumière
39 alignas(4) float linearAttenuation; // Attnuation linéaire
40 alignas(4) float quadraticAttenuation; // Attnuation quadratique
41 alignas(4) float rotationAngle;
42 alignas(4) float openAngle;
43};
44
54class Scene
55{
56public:
57
62 Scene();
63
70 Scene(float nAmbiantLightValue, Vector3i nAmbiantLightColor);
71 ~Scene();
72
80 void Use();
81
89 void useCamera(Camera *camAddr);
90
97 void setAmbiantLightValue(float nAmbiantLightValue);
98
104 float getAmbiantLightValue() const;
105
111 void setAmbiantLightColor(const Vector3i &nAmbiantLightColor);
112
118 const Vector3i &getAmbiantLightColor() const;
119
128 void addLight(Light& l);
129
135 void Draw(const BbopDrawable& spr)const;
136
140 void DrawFrameBuffer(const NoTextureSprite& spr) const;
141
146 void render();
147
148private:
149 Shader sceneShader; //<! shader
150 Shader sceneLightShader; //<! shader de lumière
151
152 float ambiantLightValue; //<! intensité lumière ambiante
153 Vector3i ambiantLightColor; //<! couleur lumière ambiante
154
155 //adresse mem shader
156 GLint *renderUniforms; //<! GPU MEM addr des uniforms du shader par default
157
158 //adresse mem light shader
159 GLint *lightRenderUniforms; //<! GPU MEM addr des uniforms du shader de lumière
160
161 GLuint lightsUBO; //<! ID de l'ubo pour transfert la list de UniformLight vers la list de Light ddu shader
162 std::vector<UniformLight> lightsVec; //<! Liste des lumières à transférer vers le shader avec lightUBO
163 Vector3f ambiantLight; //<! lumière ambiante de Scene
164
165 Camera* sceneCamera; //<! camera à utilser lors de Draw()
166
167 unsigned int frameBuffer; //<! frame buffer de la scene
168 unsigned int textureColorBuffer; //<! texture lié au frame buffer
169 unsigned int textureNormalMapBuffer; //<! texture de la normal map du buffer
170 NoTextureSprite frameBufferSprite; //<! NoTextureSprite utilisé pour afficher le frame buffer
171};
172
173#endif // !SCENE_CLASS_H
Class Parent de tous ce qui peut être dessiné par une Scene.
Definition bbopGlobal.h:94
Permet de modifier les point de vue et la position de l'affichage de la class Scene.
Definition cameraClass.h:33
Gère un point de lumière en fonction de son Intensité, sa couleur et son attenuation.
Definition lightClass.h:31
Definition spriteClass.h:149
void addLight(Light &l)
Ajoute un point de lumière dans la Scene.
Definition sceneClass.cpp:211
void setAmbiantLightColor(const Vector3i &nAmbiantLightColor)
Change la couleur de la lumière ambiante de Scene.
Definition sceneClass.cpp:189
float getAmbiantLightValue() const
Renvoie l'intensité de la lumière ambiante de Scene.
Definition sceneClass.cpp:206
~Scene()
Definition sceneClass.cpp:86
void render()
Permet de render le framebuffer de la scene en calculant sont éclairage final.
Definition sceneClass.cpp:137
void DrawFrameBuffer(const NoTextureSprite &spr) const
Dessine le frame buffer de la scene.
Definition sceneClass.cpp:132
void useCamera(Camera *camAddr)
Utilise une camera pour Draw avec la scene.
Definition sceneClass.cpp:122
void setAmbiantLightValue(float nAmbiantLightValue)
Change l'intensité de la lumière ambiante de Scene.
Definition sceneClass.cpp:200
void Use()
Charge les valeur de la scene dans le shader de celle ci.
Definition sceneClass.cpp:91
const Vector3i & getAmbiantLightColor() const
Renvoie la couleur de la lumière ambiante de Scene.
Definition sceneClass.cpp:195
Scene()
Constructeur par défault de Scene.
Definition sceneClass.cpp:18
void Draw(const BbopDrawable &spr) const
Permet de dessiner sur la fenêtre GFLW initialisée dans bbopInt() avec l'environement de la Scene.
Definition sceneClass.cpp:127
Definition shaderClass.h:28
Definition bbopMathClass.h:82
Definition bbopMathClass.h:76
Definition sceneClass.h:34
float constantAttenuation
Definition sceneClass.h:37
glm::vec3 color
Definition sceneClass.h:38
float openAngle
Definition sceneClass.h:42
float linearAttenuation
Definition sceneClass.h:39
glm::vec2 pos
Definition sceneClass.h:35
float rotationAngle
Definition sceneClass.h:41
float quadraticAttenuation
Definition sceneClass.h:40
float intensity
Definition sceneClass.h:36