2022-01-02 19:28:16 -05:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include <map>
|
|
|
|
#include <string>
|
|
|
|
|
|
|
|
#include <GL/glew.h>
|
|
|
|
|
|
|
|
#include <glm/glm.hpp>
|
|
|
|
#include <glm/gtc/type_ptr.hpp>
|
|
|
|
|
|
|
|
class ShaderProgram
|
|
|
|
{
|
|
|
|
bool mUniformLocationsNeedRefresh;
|
|
|
|
std::map<const std::string, GLint> UniformLocationCache;
|
2022-01-08 18:59:40 -05:00
|
|
|
static GLint my_checkCompileSuccess (const GLuint, const GLenum);
|
2022-01-02 19:28:16 -05:00
|
|
|
public:
|
|
|
|
GLuint ID;
|
|
|
|
ShaderProgram (const std::string&, const std::string&, const std::string&);
|
|
|
|
GLint getCachedLoc (const std::string&);
|
|
|
|
void RefreshUniformLocations (void);
|
2022-01-08 18:59:40 -05:00
|
|
|
void Use (void);
|
|
|
|
void Bool (const std::string&, const bool&);
|
|
|
|
void Float (const std::string&, const float&);
|
|
|
|
void Int (const std::string&, const int&);
|
|
|
|
void Vec2 (const std::string&, const glm::vec2&);
|
|
|
|
void Vec3 (const std::string&, const glm::vec3&);
|
|
|
|
void Vec4 (const std::string&, const glm::vec4&);
|
|
|
|
void Mat2 (const std::string&, const glm::mat2&);
|
|
|
|
void Mat3 (const std::string&, const glm::mat3&);
|
|
|
|
void Mat4 (const std::string&, const glm::mat4&);
|
2022-01-02 19:28:16 -05:00
|
|
|
|
2022-01-08 18:59:40 -05:00
|
|
|
GLuint CompileShaderBuffer (const std::string&, const GLenum);
|
|
|
|
GLuint Compile3ShaderBuffers (const std::string&, const std::string&, const std::string&);
|
|
|
|
GLuint CompileShaderPath (const std::string&, const GLenum);
|
2022-01-02 19:28:16 -05:00
|
|
|
GLint LinkProgram (void);
|
|
|
|
};
|