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;
};