#ifndef __RenderTarget__
#define __RenderTarget__

#ifndef CORE_DLL 
    #ifdef CORE_BUILD
	    #define CORE_DLL __declspec(dllexport)
    #else
	    #define CORE_DLL __declspec(dllimport)
        #pragma comment(lib, "Core.lib")
    #endif
#endif

#include "../../Core/types.h"


class CORE_DLL RenderTarget {
public:
    virtual ~RenderTarget();

    uint32 getMipLevelCount();
    uint32 getSampleCount();

    uint32 getWidth();
    uint32 getHeight();

    virtual void resize(uint32 width, uint32 height) = 0;
    virtual void resolve(RenderTarget* resolveTarget) = 0;
    virtual void generateMipmaps() = 0;

protected:
    RenderTarget();
  
    uint32 _mipLevelCount;
    uint32 _sampleCount;
    uint32 _width, _height;
};


#endif