#pragma once #include #include "ShaderUtil.h" class Shader { private: const char* _vert; const char* _frag; GLuint _id; public: Shader(const char* vert, const char* frag) : _vert(vert), _frag(frag), _id(0) { } ~Shader() { if (_id != 0) { glDeleteProgram(_id); } } GLuint Reference() const { return _id; } void Initialize() { if (_id != 0) return; _id = ShaderUtil::CreateShaderProgram(_vert, _frag); } void Use() { Initialize(); glUseProgram(_id); } void Disable() { Initialize(); glUseProgram(0); } };