Added FrameBuffer wrapper class

This commit is contained in:
viktorljung
2015-12-03 18:32:01 +01:00
parent 6a24ed534a
commit aaa6b6ef20
4 changed files with 160 additions and 18 deletions
+2 -1
View File
@@ -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