Oxygen Engine
Modern C++ 3D Engine using OpenGL
Loading...
Searching...
No Matches
skybox.h
1#ifndef OE_RENDER_SKYBOX_H
2#define OE_RENDER_SKYBOX_H
3
4#include "shader.h"
5#include "mesh.h"
6#include "cubemap.h"
7
8namespace oe::scene
9{
10 class Camera;
11}
12
13namespace oe::render
14{
15 class Texture;
16 class Cubemap;
17 class Shader;
18 class ScreenQuad;
19 class Mesh;
20
26 struct Skybox
27 {
28 void render(const oe::scene::Camera&)
29 {
30 // Nothing to do
31 }
32 };
33
37 class CubicSkybox : public Skybox
38 {
39 public:
40 CubicSkybox(Cubemap* cubemap);
41
42 void render(const oe::scene::Camera& camera);
43
44 Cubemap* cubemap = nullptr;
45
46 private:
47 Mesh _cube;
48 Shader _shader;
49 };
50
56 class FlatSkybox : public Skybox
57 {
58 public:
59 FlatSkybox(Texture* texture);
60
61 void render(const oe::scene::Camera&);
62
63 Texture* texture = nullptr;
64 private:
65 Shader _shader;
66 };
67}
68
69#endif
Definition cubemap.h:9
Standard Cubic skybox.
Definition skybox.h:38
Flat skybox.
Definition skybox.h:57
Definition mesh.h:79
Standard shader class.
Definition shader.h:23
Definition texture.h:31
The "eye of the scene".
Definition camera.h:31
Render related abstractions (Shader, Framebuffer, Cubemaps, Textures)
Definition opengl.h:10
Scene related management (Render-agnostic Geometry, Manger, etc...)
Definition debug.h:19
Common struct to all skyboxes.
Definition skybox.h:27