Program Listing for File GBuffer.ixx

Program Listing for File GBuffer.ixx#

Return to documentation for file (Src/GraphicsEngineOpenGL/renderer/deferred/GBuffer.ixx)

module;

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

#include "host_device/GlobalValues.hpp"

export module kataglyphis.opengl.gbuffer;

import kataglyphis.opengl.shader_program;

export class GBuffer
{
  public:
    GBuffer();
    GBuffer(GLuint window_width, GLuint window_height);

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

    void create();
    void read(ShaderProgram &shader_program) const;

    void update_window_params(GLuint in_window_width, GLuint in_window_height);

    GLuint get_id() const { return g_buffer; };

    ~GBuffer();

  private:
    GLuint g_buffer{};

    GLuint g_position{}, g_normal{}, g_albedo{}, g_material_id{}, g_depth{};

    GLuint g_buffer_attachment[G_BUFFER_SIZE] = { GL_COLOR_ATTACHMENT0,
        GL_COLOR_ATTACHMENT1,
        GL_COLOR_ATTACHMENT2,
        GL_COLOR_ATTACHMENT3 };

    GLuint window_width, window_height;
};