34 #include "shader_object.h"
54 static std::shared_ptr<ProgramObject>
load(
const GraphicContextPtr &gc,
const IODevicePtr &vertex_file,
const IODevicePtr &fragment_file);
55 static std::shared_ptr<ProgramObject>
load(
const GraphicContextPtr &gc,
const IODevicePtr &vertex_file,
const IODevicePtr &geometry_file,
const IODevicePtr &fragment_file);
60 static std::shared_ptr<ProgramObject>
load_and_link(
const GraphicContextPtr &gc,
const IODevicePtr &vertex_file,
const IODevicePtr &fragment_file);
61 static std::shared_ptr<ProgramObject>
load_and_link(
const GraphicContextPtr &gc,
const IODevicePtr &vertex_file,
const IODevicePtr &geometry_file,
const IODevicePtr &fragment_file);
64 virtual std::vector<ShaderObjectPtr>
shaders()
const = 0;
100 virtual void attach(
const ShaderObjectPtr &obj) = 0;
103 virtual void detach(
const ShaderObjectPtr &obj) = 0;
123 virtual void link() = 0;
131 virtual void set_uniform2i(
int location,
int value_a,
int value_b) = 0;
132 virtual void set_uniform3i(
int location,
int value_a,
int value_b,
int value_c) = 0;
133 virtual void set_uniform4i(
int location,
int value_a,
int value_b,
int value_c,
int value_d) = 0;
134 virtual void set_uniformiv(
int location,
int size,
int count,
const int *data) = 0;
148 virtual void set_uniform2f(
int location,
float value_a,
float value_b) = 0;
149 virtual void set_uniform3f(
int location,
float value_a,
float value_b,
float value_c) = 0;
150 virtual void set_uniform4f(
int location,
float value_a,
float value_b,
float value_c,
float value_d) = 0;
151 virtual void set_uniformfv(
int location,
int size,
int count,
const float *data) = 0;
158 virtual void set_uniform_matrix(
int location,
int size,
int count,
bool transpose,
const float *data) = 0;
void set_uniformiv(int location, int count, const Vec4i *data)
Definition: program_object.h:146
void set_uniformfv(int location, int count, const Vec3f *data)
Definition: program_object.h:156
void set_uniform_matrix(int location, int count, const Mat4f *matrix)
Definition: program_object.h:164
void set_uniformfv(int location, int count, const Vec2f *data)
Definition: program_object.h:155
virtual void set_uniform4f(int location, float value_a, float value_b, float value_c, float value_d)=0
void set_uniform_matrix(int location, const Mat4f &matrix)
Definition: program_object.h:161
void set_uniform2b(const std::string &name, const Vec2b &vec)
Definition: program_object.h:177
virtual void set_uniform2i(int location, int value_a, int value_b)=0
virtual bool try_link()=0
Link program.
void set_uniform3b(const std::string &name, const Vec3b &vec)
Definition: program_object.h:178
void set_uniform4i(const std::string &name, const Vec4i &vec)
Definition: program_object.h:173
void set_uniform1i(const std::string &name, int value_a)
Definition: program_object.h:166
virtual void link()=0
Link program.
void set_uniformfv(const std::string &name, int count, const Vec3f *data)
Definition: program_object.h:192
2D matrix
Definition: mat2.h:41
void set_uniform2s(const std::string &name, const Vec2s &vec)
Definition: program_object.h:174
void set_uniform4i(int location, const Vec4i &vec)
Definition: program_object.h:137
Type x
Definition: vec3.h:74
Program Object.
Definition: program_object.h:45
void set_uniform3i(const std::string &name, int value_a, int value_b, int value_c)
Definition: program_object.h:168
virtual void bind_attribute_location(int index, const std::string &name)=0
Bind attribute to specific location.
virtual void set_uniformiv(int location, int size, int count, const int *data)=0
virtual int uniform_location(const std::string &name) const =0
Returns the location of a named uniform variable.
virtual int attribute_location(const std::string &name) const =0
Returns the location of a named active attribute.
virtual bool validate()=0
Validate program.
void set_uniform4s(int location, const Vec4s &vec)
Definition: program_object.h:140
void set_uniform3s(const std::string &name, const Vec3s &vec)
Definition: program_object.h:175
Type matrix[4]
The matrix (in column-major format)
Definition: mat2.h:172
Type x
Definition: vec4.h:74
void set_uniform4b(int location, const Vec4b &vec)
Definition: program_object.h:143
void set_uniform4f(const std::string &name, const Vec4f &vec)
Definition: program_object.h:190
void set_uniform3f(const std::string &name, const Vec3f &vec)
Definition: program_object.h:189
void set_uniform4s(const std::string &name, const Vec4s &vec)
Definition: program_object.h:176
Type x
Definition: vec2.h:75
virtual void detach(const ShaderObjectPtr &obj)=0
Remove shader from program object.
void set_uniform_matrix(const std::string &name, int count, const Mat3f *matrix)
Definition: program_object.h:199
virtual int storage_buffer_index(const std::string &name) const =0
Get the storage buffer index.
void set_uniform3f(const std::string &name, float value_a, float value_b, float value_c)
Definition: program_object.h:185
void set_uniformiv(const std::string &name, int count, const Vec4i *data)
Definition: program_object.h:182
virtual void set_uniform1f(int location, float value_a)=0
virtual std::vector< ShaderObjectPtr > shaders() const =0
Returns the shaders attached to the program object.
virtual int uniform_buffer_size(const std::string &block_name) const =0
Get the uniform block size.
std::shared_ptr< ShaderObject > ShaderObjectPtr
Definition: program_object.h:41
void set_uniform_matrix(int location, const Mat2f &matrix)
Definition: program_object.h:159
void set_uniformiv(int location, int count, const Vec3i *data)
Definition: program_object.h:145
Type z
Definition: vec3.h:76
Type matrix[16]
The matrix (in column-major format)
Definition: mat4.h:338
void set_uniform_matrix(const std::string &name, int count, const Mat2f *matrix)
Definition: program_object.h:198
void set_uniform2i(const std::string &name, const Vec2i &vec)
Definition: program_object.h:171
void set_uniform_matrix(const std::string &name, const Mat2f &matrix)
Definition: program_object.h:195
std::shared_ptr< IODevice > IODevicePtr
Definition: iodevice.h:85
void set_uniform2i(const std::string &name, int value_a, int value_b)
Definition: program_object.h:167
void set_uniformiv(const std::string &name, int count, const Vec2i *data)
Definition: program_object.h:180
void set_uniform_matrix(const std::string &name, const Mat4f &matrix)
Definition: program_object.h:197
Type y
Definition: vec2.h:76
virtual void set_uniform_buffer_index(const std::string &block_name, int bind_index)=0
void set_uniform_matrix(int location, int count, const Mat3f *matrix)
Definition: program_object.h:163
void set_uniformiv(const std::string &name, int size, int count, const int *data)
Definition: program_object.h:170
virtual void bind_frag_data_location(int color_number, const std::string &name)=0
Bind shader out variable a specific color buffer location.
virtual void set_uniform3i(int location, int value_a, int value_b, int value_c)=0
void set_uniform4f(int location, const Vec4f &vec)
Definition: program_object.h:154
void set_uniform3f(int location, const Vec3f &vec)
Definition: program_object.h:153
virtual void set_uniform_matrix(int location, int size, int count, bool transpose, const float *data)=0
void set_uniform2i(int location, const Vec2i &vec)
Definition: program_object.h:135
void set_uniform2b(int location, const Vec2b &vec)
Definition: program_object.h:141
virtual int uniform_buffer_index(const std::string &block_name) const =0
Get the uniform block index.
Type y
Definition: vec4.h:75
void set_uniformfv(const std::string &name, int count, const Vec4f *data)
Definition: program_object.h:193
Type w
Definition: vec4.h:77
virtual void set_uniform3f(int location, float value_a, float value_b, float value_c)=0
void set_uniform2f(const std::string &name, const Vec2f &vec)
Definition: program_object.h:188
void set_uniform4f(const std::string &name, float value_a, float value_b, float value_c, float value_d)
Definition: program_object.h:186
void set_uniform_matrix(int location, int count, const Mat2f *matrix)
Definition: program_object.h:162
void set_uniform4b(const std::string &name, const Vec4b &vec)
Definition: program_object.h:179
void set_uniformfv(const std::string &name, int size, int count, const float *data)
Definition: program_object.h:187
virtual void set_uniform2f(int location, float value_a, float value_b)=0
void set_uniformfv(int location, int count, const Vec4f *data)
Definition: program_object.h:157
void set_uniform1f(const std::string &name, float value_a)
Definition: program_object.h:183
std::shared_ptr< ProgramObject > ProgramObjectPtr
Definition: graphic_context.h:62
static std::shared_ptr< ProgramObject > load(const GraphicContextPtr &gc, const std::string &vertex_fullname, const std::string &fragment_fullname)
Load.
virtual void set_uniformfv(int location, int size, int count, const float *data)=0
void set_uniform3i(const std::string &name, const Vec3i &vec)
Definition: program_object.h:172
void set_uniform3s(int location, const Vec3s &vec)
Definition: program_object.h:139
void set_uniform_matrix(int location, const Mat3f &matrix)
Definition: program_object.h:160
Type y
Definition: vec3.h:75
void set_uniformiv(const std::string &name, int count, const Vec3i *data)
Definition: program_object.h:181
void set_uniform2s(int location, const Vec2s &vec)
Definition: program_object.h:138
void set_uniform3b(int location, const Vec3b &vec)
Definition: program_object.h:142
std::shared_ptr< GraphicContext > GraphicContextPtr
Definition: d3d_target.h:49
Type matrix[9]
The matrix (in column-major format)
Definition: mat3.h:266
Type z
Definition: vec4.h:76
Shader Object.
Definition: shader_object.h:55
virtual void set_uniform4i(int location, int value_a, int value_b, int value_c, int value_d)=0
void set_uniform2f(const std::string &name, float value_a, float value_b)
Definition: program_object.h:184
virtual std::string info_log() const =0
Returns the current info log for the program object.
void set_uniform_matrix(const std::string &name, int count, const Mat4f *matrix)
Definition: program_object.h:200
void set_uniformiv(int location, int count, const Vec2i *data)
Definition: program_object.h:144
void set_uniform_matrix(const std::string &name, const Mat3f &matrix)
Definition: program_object.h:196
virtual void set_uniform1i(int location, int value_a)=0
static std::shared_ptr< ProgramObject > create(const GraphicContextPtr &gc)
Constructs a ProgramObject.
void set_uniform3i(int location, const Vec3i &vec)
Definition: program_object.h:136
static std::shared_ptr< ProgramObject > load_and_link(const GraphicContextPtr &gc, const std::string &vertex_fullname, const std::string &fragment_fullname)
Load and link.
void set_uniformfv(const std::string &name, int count, const Vec2f *data)
Definition: program_object.h:191
void set_uniform_matrix(const std::string &name, int size, int count, bool transpose, const float *data)
Definition: program_object.h:194
Definition: Application/application.h:35
4D matrix
Definition: mat2.h:47
4D vector
Definition: size.h:44
void set_uniform2f(int location, const Vec2f &vec)
Definition: program_object.h:152
void set_uniform4i(const std::string &name, int value_a, int value_b, int value_c, int value_d)
Definition: program_object.h:169
virtual void set_storage_buffer_index(const std::string &block_name, int bind_index)=0
virtual void attach(const ShaderObjectPtr &obj)=0
Add shader to program object.