10 OpenGLShaderProgram(
const std::filesystem::path& vertexPath,
const std::filesystem::path& fragmentPath,
const std::filesystem::path& geometryPath);
13 void Bind()
const override;
14 void Unbind()
const override;
16 uint32_t
GetID()
const override {
return m_ID; }
18 void SetBool(
const char* name,
const bool value)
const override;
19 void SetInt(
const char* name,
const int32_t value)
const override;
20 void SetFloat(
const char* name,
const float value)
const override;
21 void SetVec2(
const char* name,
const glm::vec2& value)
const override;
22 void SetVec3(
const char* name,
const glm::vec3& value)
const override;
23 void SetVec4(
const char* name,
const glm::vec4& value)
const override;
24 void SetMat2(
const char* name,
const glm::mat2& value)
const override;
25 void SetMat3(
const char* name,
const glm::mat3& value)
const override;
26 void SetMat4(
const char* name,
const glm::mat4& value)
const override;
30 struct TransparentHash {
31 using is_transparent = void;
32 size_t operator()(std::string_view sv)
const noexcept {
33 return std::hash<std::string_view>{}(sv);
37 struct TransparentEqual {
38 using is_transparent = void;
39 bool operator()(std::string_view lhs, std::string_view rhs)
const noexcept {
45 bool m_CreationSuccessful{
true };
47 mutable std::unordered_map<std::string, int32_t, TransparentHash, TransparentEqual> m_UniformLocations;
49 std::string m_DebugName;
51 std::string m_ShaderNames;
53 bool CheckCompileErrors(uint32_t shader, std::string type);
void SetVec3(const char *name, const glm::vec3 &value) const override
void SetInt(const char *name, const int32_t value) const override
void Unbind() const override
void SetMat4(const char *name, const glm::mat4 &value) const override
~OpenGLShaderProgram() override
void SetBool(const char *name, const bool value) const override
void SetVec4(const char *name, const glm::vec4 &value) const override
void Bind() const override
uint32_t GetID() const override
void SetMat3(const char *name, const glm::mat3 &value) const override
void SetVec2(const char *name, const glm::vec2 &value) const override
std::string GetShaderNames() const override
OpenGLShaderProgram(const std::filesystem::path &vertexPath, const std::filesystem::path &fragmentPath, const std::filesystem::path &geometryPath)
void SetFloat(const char *name, const float value) const override
void SetMat2(const char *name, const glm::mat2 &value) const override
For InstanceMetrics to work with a type it should derive from this.
Almost everything connected to graphics is in this namespace.