//-----------------------------------------------------------------------------------------------
// Renderer_OpenGL3_Win32.hpp
//
#pragma once
#ifndef INCLUDED_RENDERER_OPENGL3_WIN32
#define INCLUDED_RENDERER_OPENGL3_WIN32
#include "Engine/Core/PlatformDefines.hpp"
#if defined( GYPSY_ENABLE_RENDERER )

//-----------------------------------------------------------------------------------------------
#include "Engine/Renderer/Renderer_OpenGL3.hpp"
#pragma comment( lib, "opengl32" ) // Link in the OpenGL32.lib static library in Win32/Win64


/////////////////////////////////////////////////////////////////////////////////////////////////
class Texture_OpenGL3_Win32 : public Texture_OpenGL3
{
protected:
	virtual void PopulateFromFile( const char* imageFilePath, TextureFilterMode minFilter, TextureFilterMode magFilter, TextureEdgeMode edgeMode );

	friend class Renderer_OpenGL3_Win32;
};


/////////////////////////////////////////////////////////////////////////////////////////////////
class Renderer_OpenGL3_Win32 : public Renderer_OpenGL3
{
public:
	virtual void StartUp();
	virtual void SwapBuffers();

protected:
	Renderer_OpenGL3_Win32();
	virtual ~Renderer_OpenGL3_Win32();
	virtual Texture* CreateTextureFromFile( const char* imageFilePath, TextureFilterMode minFilter, TextureFilterMode magFilter, TextureEdgeMode edgeMode );
	virtual void CreateWin32OpenGLRenderingContext();

	friend class Renderer;
};


#endif // GYPSY_ENABLE_RENDERER
#endif // INCLUDED_RENDERER_OPENGL3_WIN32
