Files
fall-fever/src/FrameBuffer.h
2022-04-24 22:12:07 +02:00

75 lines
1.3 KiB
C++

#pragma once
#include "resources/CubeMap.h"
#include <glad/glad.h>
class ShaderProgram;
class CubeMap;
class AbstractFrameBuffer
{
public:
virtual ~AbstractFrameBuffer() = 0;
void bind() const;
void unbind() const;
GLuint getFBO() const;
protected:
GLuint m_FBO;
};
class FrameBuffer : public AbstractFrameBuffer
{
public:
FrameBuffer(uint32_t width, uint32_t height, ShaderProgram *shaderProgram);
~FrameBuffer();
void drawOnEntireScreen() const;
void changeDimensions(uint32_t width, uint32_t height);
void setExposureCorrection(bool exposureCorrection) const;
GLuint getTextureId() const;
private:
void generateTextures(uint32_t width, uint32_t height);
GLuint m_colorBuffer;
GLuint m_depthStencilBuffer;
ShaderProgram *m_shaderProgram;
};
class AbstractDepthMap : public AbstractFrameBuffer
{
public:
virtual ~AbstractDepthMap() = 0;
};
// FrameBuffer without color buffer. (Shadows)
class DepthMap : public AbstractDepthMap
{
public:
DepthMap(int resolution);
~DepthMap();
GLuint getDepthMap() const;
private:
GLuint m_depthMap;
};
class DepthMapCube : public AbstractDepthMap
{
public:
DepthMapCube(int resolution);
~DepthMapCube();
GLuint getCubeMapTextureId();
private:
ResourceId m_cubeMap;
};