
#ifndef GRAPHICS_H
#define GRAPHICS_H

#include <Spectre/GfxDriver/GfxDriver.h>
#include <Spectre/Display/Display.h>

namespace sp {

class PlatformApplication;

class Graphics
{
public :
	enum MatrixMode {
		PROJECTION,
		MODELVIEW,
	};

	enum VertexType {
		TRIANGLES,
	};

public :
	Graphics(PlatformApplication *platform);
	~Graphics();

	bool init();

	void shutdown();

	std::string getVersion() const;

	void setDisplayMode(Display::Mode mode);

	void setSize(int width, int height);

	void setViewport(int x, int y, int width, int height);

	void setClearColor(float r, float g, float b);

	void clearBuffer();

	void swapBuffers();

	GfxDriver* getDriver();

	Display* getDisplay();

protected :

	int m_width;
	int m_height;

	Display *m_display;

	// Graphics Driver. OpenGL/Vulcan/DirectX etc.
	GfxDriver *m_gfxdrv;
};

} // namespace sp

#endif /* GRAPHICS_H */
