Added FrameBuffer wrapper class
This commit is contained in:
@@ -8,6 +8,7 @@
|
||||
//TODO: Temp resourceManager
|
||||
#include "../Core/ResourceManager.h"
|
||||
#include "Util/UnorderedMapVec2.h"
|
||||
#include "Util/FrameBuffer.h"
|
||||
|
||||
class Renderer : public IRenderer
|
||||
{
|
||||
@@ -22,7 +23,7 @@ private:
|
||||
Texture* m_ErrorTexture;
|
||||
Texture* m_WhiteTexture;
|
||||
float m_CameraMoveSpeed;
|
||||
GLuint m_PickingBuffer;
|
||||
FrameBuffer m_PickingBuffer;
|
||||
GLuint m_PickingTexture;
|
||||
GLuint m_DepthBuffer;
|
||||
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
#ifndef FrameBuffer_h__
|
||||
#define FrameBuffer_h__
|
||||
|
||||
#include "OpenGL.h"
|
||||
#include "GLError.h"
|
||||
|
||||
class BufferResource
|
||||
{
|
||||
public:
|
||||
BufferResource(GLuint* resourceHandle, GLenum resourceType, GLenum attachment);
|
||||
|
||||
GLuint* m_ResourceHandle;
|
||||
GLenum m_ResourceType;
|
||||
GLenum m_Attachment;
|
||||
private:
|
||||
|
||||
};
|
||||
|
||||
template <GLenum RESOURCETYPE>
|
||||
class ResourceType : public BufferResource
|
||||
{
|
||||
public:
|
||||
ResourceType(GLuint* resourceHandle, GLenum attachment)
|
||||
: BufferResource(resourceHandle, RESOURCETYPE, attachment) { }
|
||||
};
|
||||
|
||||
class Texture2D : public ResourceType<GL_TEXTURE_2D>
|
||||
{
|
||||
public:
|
||||
Texture2D(GLuint* resourceHandle, GLenum attachment)
|
||||
: ResourceType(resourceHandle, attachment) { };
|
||||
|
||||
~Texture2D();
|
||||
};
|
||||
|
||||
class RenderBuffer : public ResourceType<GL_RENDERBUFFER>
|
||||
{
|
||||
public:
|
||||
RenderBuffer(GLuint* resourceHandle, GLenum attachment)
|
||||
: ResourceType(resourceHandle, attachment)
|
||||
{ };
|
||||
|
||||
~RenderBuffer();
|
||||
};
|
||||
|
||||
class FrameBuffer
|
||||
{
|
||||
public:
|
||||
FrameBuffer()
|
||||
: m_BufferHandle(0) { }
|
||||
~FrameBuffer();
|
||||
|
||||
void AddResource(std::shared_ptr<BufferResource> resource);
|
||||
void Generate();
|
||||
void Bind();
|
||||
void Unbind();
|
||||
GLuint GetHandle();
|
||||
|
||||
private:
|
||||
GLuint m_BufferHandle;
|
||||
std::vector<std::shared_ptr<BufferResource>> m_Resources;
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user