summaryrefslogtreecommitdiff
path: root/engine-ocean/Graphics/GLWrappers/shader.h
blob: da0ae5dc9412c1fd81a587bb8d997cea81d6fc0b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#pragma once

#include "../shaderloader.h"
#include "../camera.h"
#include "../material.h"
#include "../modeltransform.h"
#include "../light.h"

class Shader{
public:
    Shader(std::vector<GLenum> shaderTypes, std::vector<const char*> filepaths);
    ~Shader();

    void bind();
    void unbind();
    GLuint getHandle();
    void setMaterial(std::shared_ptr<Material> material);
    void setCamera(std::shared_ptr<Camera> camera);
    void setModelTransform(std::shared_ptr<ModelTransform> modelTransform);
    void setModelTransform(glm::mat4 modelMatrix);
    void setGlobalCoeffs(glm::vec3 coeffs);
    void setLights(std::vector<std::shared_ptr<Light>> lights);
    void clearLights();
    void setTextUniforms(float screenWidth, float screenHeight, glm::vec3 color);

private:
    GLuint m_handle;
};