#ifndef GRAPHICS_SHADER_H_
#define GRAPHICS_SHADER_H_

#include <iostream>
#include <glm/glm.hpp>

class Shader {
public:
	unsigned int id;

	explicit Shader(unsigned int id);
	~Shader();

	void use();
	void uniformMatrix(const std::string& name, glm::mat4 matrix);
	void uniform1i(const std::string& name, int x);
	void uniform1f(const std::string& name, float x);
	void uniform2f(const std::string& name, float x, float y);
	void uniform3f(const std::string& name, float x, float y, float z);

    static Shader* loadShader(const std::string& vertexFile, const std::string& fragmentFile);
};


#endif /* GRAPHICS_SHADER_H_ */
