34 #include "../../Core/IOData/file_system.h" 35 #include "graphic_context.h" 36 #include "uniform_vector.h" 44 class ProgramObject_Impl;
46 class GraphicContextProvider;
47 class XMLResourceDocument;
48 class ProgramObjectProvider;
220 explicit operator bool()
const {
return bool(impl); }
294 void set_uniform3i(
int location,
int value_a,
int value_b,
int value_c);
295 void set_uniform4i(
int location,
int value_a,
int value_b,
int value_c,
int value_d);
296 void set_uniformiv(
int location,
int size,
int count,
const int *data);
310 void set_uniform2f(
int location,
float value_a,
float value_b);
311 void set_uniform3f(
int location,
float value_a,
float value_b,
float value_c);
312 void set_uniform4f(
int location,
float value_a,
float value_b,
float value_c,
float value_d);
313 void set_uniformfv(
int location,
int size,
int count,
const float *data);
320 void set_uniform_matrix(
int location,
int size,
int count,
bool transpose,
const float *data);
377 std::shared_ptr<ProgramObject_Impl> impl;
void attach(const ShaderObject &obj)
Add shader to program object.
void set_uniform_matrix(const std::string &name, int count, const Mat3f *matrix)
Definition: program_object.h:361
void set_uniform2b(const std::string &name, const Vec2b &vec)
Definition: program_object.h:339
void set_uniform_matrix(int location, const Mat3f &matrix)
Definition: program_object.h:322
void set_uniform4f(int location, const Vec4f &vec)
Definition: program_object.h:316
Shader Object.
Definition: shader_object.h:67
Type matrix[9]
The matrix (in column-major format)
Definition: mat3.h:270
int get_storage_buffer_index(const std::string &name) const
Get the storage buffer index.
Program Object provider.
Definition: program_object_provider.h:42
void set_uniform2i(int location, int value_a, int value_b)
Type w
Definition: vec4.h:82
void set_uniform3i(const std::string &name, const Vec3i &vec)
Definition: program_object.h:334
void set_uniform4f(const std::string &name, const Vec4f &vec)
Definition: program_object.h:352
void set_uniform4i(int location, const Vec4i &vec)
Definition: program_object.h:299
int get_uniform_location(const std::string &name) const
Returns the location of a named uniform variable.
void set_uniform2s(int location, const Vec2s &vec)
Definition: program_object.h:300
void set_uniformfv(const std::string &name, int count, const Vec3f *data)
Definition: program_object.h:354
void set_uniform_matrix(int location, int count, const Mat4f *matrix)
Definition: program_object.h:326
void set_uniform1i(int location, int value_a)
I/O Device interface.
Definition: iodevice.h:49
Interface for implementing a GraphicContext target.
Definition: graphic_context_provider.h:85
void set_uniform2i(int location, const Vec2i &vec)
Definition: program_object.h:297
Type x
Definition: vec3.h:79
void set_uniform_matrix(const std::string &name, const Mat3f &matrix)
Definition: program_object.h:358
void set_uniform2f(const std::string &name, float value_a, float value_b)
Definition: program_object.h:346
static ProgramObject load_and_link(GraphicContext &gc, const std::string &vertex_fullname, const std::string &fragment_fullname)
Load and link.
void set_uniformiv(int location, int count, const Vec2i *data)
Definition: program_object.h:306
void set_uniform3f(const std::string &name, float value_a, float value_b, float value_c)
Definition: program_object.h:347
bool validate()
Validate program.
void set_uniform3f(const std::string &name, const Vec3f &vec)
Definition: program_object.h:351
void set_uniform_matrix(const std::string &name, const Mat2f &matrix)
Definition: program_object.h:357
Type y
Definition: vec3.h:80
void set_uniform_matrix(const std::string &name, int count, const Mat2f *matrix)
Definition: program_object.h:360
void set_uniform3b(const std::string &name, const Vec3b &vec)
Definition: program_object.h:340
void set_uniform_matrix(int location, int count, const Mat2f *matrix)
Definition: program_object.h:324
void set_uniform4b(const std::string &name, const Vec4b &vec)
Definition: program_object.h:341
void set_uniformfv(int location, int size, int count, const float *data)
ProgramObjectProvider * get_provider() const
Retrieves the provider.
void set_uniform2f(int location, float value_a, float value_b)
void set_uniform3s(const std::string &name, const Vec3s &vec)
Definition: program_object.h:337
Type x
Definition: vec4.h:79
int get_uniform_buffer_index(const std::string &block_name) const
Get the uniform block index.
void set_uniformiv(const std::string &name, int count, const Vec2i *data)
Definition: program_object.h:342
void set_uniform_matrix(int location, int count, const Mat3f *matrix)
Definition: program_object.h:325
void set_uniform2f(int location, const Vec2f &vec)
Definition: program_object.h:314
void set_uniformfv(const std::string &name, int size, int count, const float *data)
Definition: program_object.h:349
void set_uniformiv(int location, int size, int count, const int *data)
unsigned int get_handle() const
Returns the OpenGL program object handle.
void set_uniform3i(int location, const Vec3i &vec)
Definition: program_object.h:298
bool is_null() const
Returns true if this object is invalid.
Definition: program_object.h:219
Type matrix[4]
The matrix (in column-major format)
Definition: mat2.h:177
bool operator==(const ProgramObject &other) const
Equality operator.
void set_uniformfv(const std::string &name, int count, const Vec4f *data)
Definition: program_object.h:355
void set_uniform2i(const std::string &name, int value_a, int value_b)
Definition: program_object.h:329
void detach(const ShaderObject &obj)
Remove shader from program object.
void set_uniform4s(int location, const Vec4s &vec)
Definition: program_object.h:302
Virtual File System (VFS).
Definition: file_system.h:46
2D matrix
Definition: mat2.h:44
void set_uniform4f(const std::string &name, float value_a, float value_b, float value_c, float value_d)
Definition: program_object.h:348
void bind_attribute_location(int index, const std::string &name)
Bind attribute to specific location.
void set_uniform3f(int location, float value_a, float value_b, float value_c)
void set_uniform2s(const std::string &name, const Vec2s &vec)
Definition: program_object.h:336
void set_uniformiv(const std::string &name, int count, const Vec4i *data)
Definition: program_object.h:344
Type y
Definition: vec2.h:81
void set_uniform_matrix(const std::string &name, int size, int count, bool transpose, const float *data)
Definition: program_object.h:356
void set_uniform1f(int location, float value_a)
void set_uniform1i(const std::string &name, int value_a)
Definition: program_object.h:328
void set_uniform4b(int location, const Vec4b &vec)
Definition: program_object.h:305
void set_uniform3s(int location, const Vec3s &vec)
Definition: program_object.h:301
void set_uniform_matrix(const std::string &name, int count, const Mat4f *matrix)
Definition: program_object.h:362
Type z
Definition: vec4.h:81
void set_uniformiv(int location, int count, const Vec4i *data)
Definition: program_object.h:308
std::vector< ShaderObject > get_shaders() const
Returns the shaders attached to the program object.
void set_uniform2f(const std::string &name, const Vec2f &vec)
Definition: program_object.h:350
void set_uniform4f(int location, float value_a, float value_b, float value_c, float value_d)
Interface to drawing graphics.
Definition: graphic_context.h:256
void set_uniform3f(int location, const Vec3f &vec)
Definition: program_object.h:315
void set_uniform1f(const std::string &name, float value_a)
Definition: program_object.h:345
void set_uniform2b(int location, const Vec2b &vec)
Definition: program_object.h:303
Program Object.
Definition: program_object.h:68
Type x
Definition: vec2.h:80
void set_uniformiv(const std::string &name, int size, int count, const int *data)
Definition: program_object.h:332
void set_uniform4i(const std::string &name, const Vec4i &vec)
Definition: program_object.h:335
void set_uniform4s(const std::string &name, const Vec4s &vec)
Definition: program_object.h:338
void set_uniformfv(int location, int count, const Vec3f *data)
Definition: program_object.h:318
void set_uniformfv(int location, int count, const Vec4f *data)
Definition: program_object.h:319
Type matrix[16]
The matrix (in column-major format)
Definition: mat4.h:343
void set_storage_buffer_index(const std::string &block_name, int bind_index)
Sets the UniformBuffer.
void set_uniform3i(const std::string &name, int value_a, int value_b, int value_c)
Definition: program_object.h:330
Type z
Definition: vec3.h:81
void set_uniformfv(const std::string &name, int count, const Vec2f *data)
Definition: program_object.h:353
XML Resource Document.
Definition: xml_resource_document.h:47
void set_uniform2i(const std::string &name, const Vec2i &vec)
Definition: program_object.h:333
4D matrix
Definition: mat2.h:50
Type y
Definition: vec4.h:80
std::string get_info_log() const
Returns the current info log for the program object.
void set_uniform_matrix(int location, const Mat2f &matrix)
Definition: program_object.h:321
int get_attribute_location(const std::string &name) const
Returns the location of a named active attribute.
void set_uniform3b(int location, const Vec3b &vec)
Definition: program_object.h:304
void set_uniformiv(int location, int count, const Vec3i *data)
Definition: program_object.h:307
4D vector
Definition: size.h:47
int get_uniform_buffer_size(const std::string &block_name) const
Get the uniform block size.
void set_uniform_matrix(int location, const Mat4f &matrix)
Definition: program_object.h:323
void set_uniformiv(const std::string &name, int count, const Vec3i *data)
Definition: program_object.h:343
ProgramObject()
Construct a null instance.
void set_uniform_matrix(const std::string &name, const Mat4f &matrix)
Definition: program_object.h:359
void throw_if_null() const
Throw an exception if this object is invalid.
void set_uniform4i(const std::string &name, int value_a, int value_b, int value_c, int value_d)
Definition: program_object.h:331
void set_uniform3i(int location, int value_a, int value_b, int value_c)
void set_uniform_matrix(int location, int size, int count, bool transpose, const float *data)
void set_uniform4i(int location, int value_a, int value_b, int value_c, int value_d)
static ProgramObject load(GraphicContext &gc, const std::string &resource_id, const XMLResourceDocument &resman)
Load.
void set_uniform_buffer_index(const std::string &block_name, int bind_index)
Sets the UniformBuffer.
void set_uniformfv(int location, int count, const Vec2f *data)
Definition: program_object.h:317
void bind_frag_data_location(int color_number, const std::string &name)
Bind shader out variable a specific color buffer location.