#pragma once

#include "misc/mirage_type.h"
#include "sokol/sokol_header.h"

class mirage_window;


class mirage_render_context {
public:
	virtual ~mirage_render_context() = default;

	virtual bool init() { return false; }
	virtual void end_init() {}
	virtual void cleanup() { }
	virtual void tick(const duration_type& in_delta) = 0;
	virtual sg_environment get_environment() = 0;
	virtual bool setup_surface(mirage_window* in_window) { return false; }
};

mirage_render_context* mirage_create_render_context();
