46 lines
568 B
C++
46 lines
568 B
C++
#pragma once
|
|
|
|
#include <GL/glew.h>
|
|
|
|
#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);
|
|
}
|
|
};
|