Program Listing for File SkyBox.ixx

Program Listing for File SkyBox.ixx#

Return to documentation for file (Src/GraphicsEngineOpenGL/scene/sky_box/SkyBox.ixx)

module;

#include <glad/glad.h>
#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp>
#include <glm/gtc/type_ptr.hpp>
#include <memory>

#include "host_device/GlobalValues.hpp"

export module kataglyphis.opengl.sky_box;

import kataglyphis.opengl.shader_program;
import kataglyphis.opengl.mesh;

export class SkyBox
{
  public:
    SkyBox();

    SkyBox(const SkyBox &) = delete;
    SkyBox &operator=(const SkyBox &) = delete;
    SkyBox(SkyBox &&) = delete;
    SkyBox &operator=(SkyBox &&) = delete;

    void draw_sky_box(glm::mat4 projection_matrix,
      glm::mat4 view_matrix,
      GLuint window_width,
      GLuint window_height,
      GLfloat delta_time);

    void reload();

    ~SkyBox();

  private:
    GLfloat movement_speed = 0.1f;

    GLfloat shader_playback_time;

    std::unique_ptr<Mesh> sky_mesh;
    std::unique_ptr<ShaderProgram> shader_program;

    GLuint texture_id{};
};