26 lines
905 B
C++
Executable File

#pragma once
#include "Deer/Memory.h"
#include "glm/glm.hpp"
#include <string>
namespace Deer {
class Shader {
public:
virtual void bind() const = 0;
virtual ~Shader() = default;
virtual void uploadUniformFloat(const std::string& name, float value) = 0;
virtual void uploadUniformFloat2(const std::string& name, const glm::vec2& value) = 0;
virtual void uploadUniformFloat3(const std::string& name, const glm::vec3& value) = 0;
virtual void uploadUniformFloat4(const std::string& name, const glm::vec4& value) = 0;
virtual void uploadUniformInt(const std::string& name, int value) = 0;
virtual void uploadUniformMat4(const std::string& name, const glm::mat4 mat) = 0;
static Ref<Shader> create(const std::string& filePath);
static Ref<Shader> create(uint8_t* data, uint32_t size);
static Ref<Shader> create(const std::string& vertexSrc, const std::string& fragmentSrc);
};
}