22 gShader(
const std::string& shaderFullPath);
23 gShader(
const std::string& vertexFullPath,
const std::string& fragmentFullPath,
const std::string& geometryFullPath =
"");
26 void load(
const std::string& shaderFullPath);
27 void load(
const std::string& vertexFullPath,
const std::string& fragmentFullPath,
const std::string& geometryFullPath =
"");
30 void loadShader(
const std::string& vertexFileName,
const std::string& fragmentFileName,
const std::string& geometryFileName =
"");
32 void loadProgram(
const std::string& vertexSource,
const std::string& fragmentSource,
const std::string& geometrySource =
"");
46 void setBool(
const std::string &name,
bool value);
47 void setInt(
const std::string &name,
int value);
49 void setFloat(
const std::string &name,
float value);
50 void setVec2(
const std::string &name,
const glm::vec2 &value);
51 void setVec2(
const std::string &name,
float x,
float y);
52 void setVec3(
const std::string &name,
const glm::vec3 &value);
53 void setVec3(
const std::string &name,
float x,
float y,
float z);
54 void setVec4(
const std::string &name,
const glm::vec4 &value);
55 void setVec4(
const std::string &name,
float x,
float y,
float z,
float w);
56 void setMat2(
const std::string &name,
const glm::mat2 &mat);
57 void setMat3(
const std::string &name,
const glm::mat3 &mat);
58 void setMat4(
const std::string &name,
const glm::mat4 &mat);
63 enum class ShaderType {
69 void loadProgramInternal(
const char* vertexSource,
const char* fragmentSource,
const char* geometrySource);
71 void checkCompileErrors(GLuint shader,
const std::string& type,
const char* shaderCode);
72 std::string preprocessShader(
const std::string& shaderCode, std::unordered_map<std::string, std::string> defines);
73 std::unordered_map<std::string, std::string> generateDefines(ShaderType type);
75 std::unordered_map<std::string, GLint> uniformlocations;
76 std::unordered_map<std::string, GLuint> ubos;
78 std::unordered_map<GLint, int> cachedints;
79 std::unordered_map<GLint, float> cachedfloats;
80 std::unordered_map<GLint, glm::vec2> cachedvec2s;
81 std::unordered_map<GLint, glm::vec3> cachedvec3s;
82 std::unordered_map<GLint, glm::vec4> cachedvec4s;
83 std::unordered_map<GLint, glm::mat2> cachedmat2s;
84 std::unordered_map<GLint, glm::mat3> cachedmat3s;
85 std::unordered_map<GLint, glm::mat4> cachedmat4s;
86 void clearUniformCaches();