Banuba SDK
Loading...
Searching...
No Matches
opengl_shader_program.hpp
1#pragma once
2
3#include <string_view>
4#include <cstdint>
5
6namespace bnb::player_api
7{
8
9 class opengl_shader_program
10 {
11 public:
12 opengl_shader_program(const std::string_view& vertex_shader_source, const std::string_view& fragmant_shader_source);
13 ~opengl_shader_program();
14
15 void use() const;
16 static void unuse();
17
18 int32_t get_program_id() const;
19 int32_t get_attribute_location(const std::string_view& attribute_name) const;
20 int32_t get_uniform_location(const std::string_view& uniform_name) const;
21
22 void set_uniform_texture_unit(int32_t uniform, uint32_t texture_unit_index) const;
23 void set_uniform_vec2(int32_t uniform, const float* const vec) const;
24 void set_uniform_vec4(int32_t uniform, const float* const vec) const;
25 void set_uniform_mat4(int32_t uniform, const float* const mat, bool transpose = false) const;
26 void set_uniform_int(int32_t uniform, int32_t val) const;
27
28 private:
29 uint32_t m_program{0};
30 }; // class bnb::player_api::opengl_shader_program
31
32} // namespace bnb::player_api