
#ifndef PLATFORM_WIN32_GLCONTEXT_H
#define PLATFORM_WIN32_GLCONTEXT_H

// Win32 OpenGL Context (wgl)

#include <Windows.h>
#include <Spectre/Display/GLContext.h>

class Win32GLContext : public GLContext
{
public :
	Win32GLContext();
	~Win32GLContext();

	// Create a context associated with a display.
	bool create(const PlatformDisplay* display);

	void destroy();

	bool activate();

	bool deactivate();

	bool isActive() const;

	bool setSwapInterval(int interval);

	void setSize(unsigned int width, unsigned int height);

	void setSize(const Vector2u size);

	void swapBuffers();

private :

	void createGLContext();

	bool setPixelFormat();

private :

	HWND	m_wnd;
	HDC	m_deviceContext;
	HGLRC	m_renderContext;
};

#endif /* PLATFORM_WIN32_GLCONTEXT_H */
