#pragma once

#include "BsGLPrerequisites.h"

namespace BansheeEngine 
{
	/**
	 * @brief	Abstract class that encapsulated an OpenGL context. Each platform
	 *			should provide its own GLContext specialization.
	 */
    class BS_RSGL_EXPORT GLContext
    {
    public:
        GLContext();
        virtual ~GLContext();

		/**
		 * @brief	Activates the rendering context (all subsequent rendering commands will be executed on it).
		 */
        virtual void setCurrent() = 0;

		/**
		 * @brief	Deactivates the rendering context. Normally called just before setCurrent is called on another context.
		 */
        virtual void endCurrent() = 0;
        
		/**
		 * @brief	Releases the render context, freeing all of its resources.
		 */
		virtual void releaseContext() {}
    };
}
