perlin-shadows/src/shader.h
Michael Bradley 9a7969b63a
Some checks failed
Build / Format (push) Successful in 20s
Build / Lint (push) Failing after 1m35s
Build / Build (push) Failing after 33s
Incorporate clangd recommendations
2025-02-28 20:46:42 -05:00

42 lines
1.3 KiB
C++

#pragma once
#include <GL/glew.h>
#include <glm/glm.hpp>
#include <string>
struct Vertex {
glm::vec3 position;
glm::vec3 normal;
};
class Shader {
public:
Shader(const std::string &, const std::string &, const std::string & = "");
~Shader();
[[nodiscard]] bool CopyDataToUniform(const glm::mat4 &,
const std::string &) const;
[[nodiscard]] bool CopyDataToUniform(int, const glm::mat4 *,
const std::string &) const;
[[nodiscard]] bool CopyDataToUniform(const glm::vec4 &,
const std::string &) const;
[[nodiscard]] bool CopyDataToUniform(const glm::vec3 &,
const std::string &) const;
[[nodiscard]] bool CopyDataToUniform(float, const std::string &) const;
[[nodiscard]] bool CopyDataToUniform(int, const std::string &) const;
[[nodiscard]] bool CopyDataToUniform(bool, const std::string &) const;
void PrintStatus() const;
[[nodiscard]] GLuint id() const { return id_; }
private:
GLuint id_;
[[nodiscard]] static GLuint CompileShader(const std::string &, GLenum);
static void CheckGLError(const std::string &);
static void CheckProgramivError(GLuint, GLenum, const std::string &);
static void CheckShaderivError(GLuint, GLenum, const std::string &);
};