Bbop-2D 0.4.1-alpha
Bbop-2D is a c++ library based on openGL to make 2D game. It implement sprite, shape, light and more.
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{
56 public:
61 Scene();
62
69 Scene(float nAmbiantLightValue, Vector3i nAmbiantLightColor);
70 ~Scene();
71
79 void Use();
80
88 void useCamera(Camera *camAddr);
89
96 void setAmbiantLightValue(float nAmbiantLightValue);
97
103 float getAmbiantLightValue() const;
104
110 void setAmbiantLightColor(const Vector3i &nAmbiantLightColor);
111
117 const Vector3i &getAmbiantLightColor() const;
118
127 void addLight(Light &l);
128
134 void Draw(const BbopDrawable &spr) const;
135
139 void DrawFrameBuffer(const NoTextureSprite &spr) const;
140
145 void render();
146
147 private:
148 Shader sceneShader; //<! shader
149 Shader sceneLightShader; //<! shader de lumière
150
151 float ambiantLightValue; //<! intensité lumière ambiante
152 Vector3i ambiantLightColor; //<! couleur lumière ambiante
153
154 //adresse mem shader
155 GLint *renderUniforms; //<! GPU MEM addr des uniforms du shader par default
156
157 //adresse mem light shader
158 GLint *lightRenderUniforms; //<! GPU MEM addr des uniforms du shader de lumière
159
160 GLuint lightsUBO; //<! ID de l'ubo pour transfert la list de UniformLight vers la list de Light ddu shader
161 std::vector<UniformLight>
162 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
170 textureNormalMapBuffer; //<! texture de la normal map du buffer
172 frameBufferSprite; //<! NoTextureSprite utilisé pour afficher le frame buffer
173};
174
175#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:152
Gère la scene et affiche des BbopDrawable.
Definition sceneClass.h:55
void addLight(Light &l)
Ajoute un point de lumière dans la Scene.
Definition sceneClass.cpp:256
unsigned int textureNormalMapBuffer
Definition sceneClass.h:170
void setAmbiantLightColor(const Vector3i &nAmbiantLightColor)
Change la couleur de la lumière ambiante de Scene.
Definition sceneClass.cpp:231
float getAmbiantLightValue() const
Renvoie l'intensité de la lumière ambiante de Scene.
Definition sceneClass.cpp:254
GLint * lightRenderUniforms
Definition sceneClass.h:158
~Scene()
Definition sceneClass.cpp:109
void render()
Permet de render le framebuffer de la scene en calculant sont éclairage final.
Definition sceneClass.cpp:160
void DrawFrameBuffer(const NoTextureSprite &spr) const
Dessine le frame buffer de la scene.
Definition sceneClass.cpp:155
Vector3f ambiantLight
Definition sceneClass.h:163
std::vector< UniformLight > lightsVec
Definition sceneClass.h:162
GLint * renderUniforms
Definition sceneClass.h:155
void useCamera(Camera *camAddr)
Utilise une camera pour Draw avec la scene.
Definition sceneClass.cpp:151
Shader sceneLightShader
Definition sceneClass.h:149
Camera * sceneCamera
Definition sceneClass.h:165
void setAmbiantLightValue(float nAmbiantLightValue)
Change l'intensité de la lumière ambiante de Scene.
Definition sceneClass.cpp:245
Vector3i ambiantLightColor
Definition sceneClass.h:152
float ambiantLightValue
Definition sceneClass.h:151
void Use()
Charge les valeur de la scene dans le shader de celle ci.
Definition sceneClass.cpp:111
const Vector3i & getAmbiantLightColor() const
Renvoie la couleur de la lumière ambiante de Scene.
Definition sceneClass.cpp:240
GLuint lightsUBO
Definition sceneClass.h:160
unsigned int frameBuffer
Definition sceneClass.h:167
Scene()
Constructeur par défault de Scene.
Definition sceneClass.cpp:18
unsigned int textureColorBuffer
Definition sceneClass.h:168
Shader sceneShader
Definition sceneClass.h:148
NoTextureSprite frameBufferSprite
Definition sceneClass.h:172
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:153
Definition shaderClass.h:28
Definition bbopMathClass.h:87
Definition bbopMathClass.h:80
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