engine/include/FrameManager/FrameManager.h
2013-01-28 09:51:30 +00:00

97 lines
2.4 KiB
C++

#ifndef FRAME_MANAGER_H_INCLUDED
#define FRAME_MANAGER_H_INCLUDED
/*
This code contains frame manager to do posteffects
Use global variable ResourceManager to get access to light manager
*/
#ifdef TARGET_ANDROID
#include <GLES2/gl2.h>
#include <GLES2/gl2ext.h>
#endif
#ifdef TARGET_WIN32
#include "include/OpenGlExt/OpenGlExt.h"
#endif
#include "include/Utils/Utils.h"
#include "include/TextureManager/SalmonTexture.h"
namespace SE
{
extern const int CONST_SCREEN_FRAMEBUFFER;
struct TFrame
{
cardinal FrameBuffer;
cardinal DepthRenderBuffer;
cardinal TexID;
cardinal Width;
cardinal Height;
std::string TexName;
};
typedef std::map<std::string, TFrame> TFrameMap;
class TRendererInterface;
class THalibutRendererInterface;
class THalibutRenderer;
class THalibutRendererAndroid;
class THalibutRendererIos;
class TSalmonRendererInterface;
class TSalmonRenderer;
class TSalmonRendererAndroid;
class TSalmonRendererIos;
class TFrameManager
{
protected:
TFrameMap FrameMap;
public:
TFrameManager() {}
~TFrameManager();
void FreeFrameManager();
//Clean up frame map
cardinal AddFrameRenderBuffer(const std::string& frameName, cardinal width, cardinal height);
//Add a new render buffer with name frameName. Width and height must be power of two (512, 1024 etc)
void DeleteFrameRenderBuffer(const std::string& frameName);
//Delete render / depth buffer with name frameName
cardinal AddDepthBuffer(const std::string& frameName, cardinal width, cardinal height);
//Add depth buffer with name frameName Width and height must be power of two (512, 1024 etc)
cardinal AddCubemapBuffer(const std::string& frameName, cardinal width, cardinal height);
//Add cubemap render buffer with name frameName Width and height must be power of two (512, 1024 etc)
cardinal GetFrameTexture(const std::string& frameName);
//Get texture ID from frame with name frameName
ivec2 GetFrameWidthHeight(const std::string& frameName);
TTextureData ReadFromBufferToTexData(const std::string& frameName);
friend class TRendererInterface;
friend class THalibutRendererInterface;
friend class THalibutRenderer;
friend class THalibutRendererAndroid;
friend class THalibutRendererIos;
friend class TSalmonRendererInterface;
friend class TSalmonRenderer;
friend class TSalmonRendererAndroid;
friend class TSalmonRendererIos;
};
} //namespace SE
#endif