24 #include <flw/flc/pipeline/Uniform.h> 25 #include <flw/flc/pipeline/Shader.h> 26 #include <flw/flc/extended/pipeline/UniformBuffer.h> 27 #include <flw/cmn/Aliases.h> 40 static constexpr
const char* LIGHTS_BINDING_POINT_NAME =
"uSpotLightsUBO";
42 Program(
const std::vector<flc::Shader *> &shaders, GLboolean skipLinking = GL_FALSE);
51 static void useProgram(GLuint handle);
53 static void disusePrograms();
56 void uniformPush(
const std::string& name, GLint data);
58 void uniformPush(
const std::string& name, GLint *data, GLint count);
60 void uniformPush(
const std::string& name, GLfloat data);
62 void uniformPush(
const std::string& name, GLfloat *data, GLint count);
64 void uniformPush(
const std::string& name, glm::mat3 data);
66 void uniformPush(
const std::string& name, glm::mat4 data);
68 void uniformPush(
const std::string& name, glm::mat4 *data, GLuint size);
70 void uniformPush(
const std::string& name, glm::vec2 data);
72 void uniformPush(
const std::string& name, glm::vec3 data);
74 void uniformPush(
const std::string& name, glm::vec3 *data, GLuint size);
76 void uniformPush(
const std::string& name, glm::vec4 data);
79 GLint getUniformLocation(
const std::string& name);
81 GLuint getHandle()
const;
85 void log(
const std::string& programName)
const;
88 const bool mDelayedLinking;
90 std::vector<Uniform> mUniforms;
91 std::vector<flc::Shader*> mShaders;
93 inline void getUniforms();
101 inline void unload();
103 #if defined(FILLWAVE_BACKEND_OPENGL_ES_20) 106 void getUniformBlock(
const std::string& name, GLuint bindingPoint);
107 void uniformBlockPush(
const std::string& name, GLfloat* data,
size_t size = 0);
110 std::vector<pu<flc::UniformBuffer>> mUniformBuffers;
Single GLSL program object.
Definition: Program.h:37
Single GLSL shader object.
Definition: Shader.h:44