#ifndef N_SHADER_H_ #define N_SHADER_H_ #include #include #include #include #include "gl_core_3_3.h" #include #include #include #include #include "resource.hpp" class Shader { public: Shader( std::string vert, std::string frag ); ~Shader(); unsigned int getProgram(); void bind(); void unbind(); void setParameter( std::string name, int foo ); void setParameter( std::string name, float foo ); void setParameter( std::string name, glm::mat4& foo ); void setParameter( std::string name, glm::vec4 foo ); void setParameter( std::string name, glm::vec2 foo ); void setAttribute( std::string name, unsigned int buffer, unsigned int stepsize ); private: std::vector m_activeattribs; bool m_good; unsigned int getUniformLocation( std::string ); int compile( unsigned int shader, std::string& error ); int link( unsigned int vert, unsigned int frag, std::string& error ); unsigned int m_program; }; #endif // N_SHADER_H_