uicore::ProgramObject Class Referenceabstract

Program Object. More...

#include <program_object.h>

Public Member Functions

virtual void attach (const ShaderObjectPtr &obj)=0
 Add shader to program object. More...
 
virtual int attribute_location (const std::string &name) const =0
 Returns the location of a named active attribute. More...
 
virtual void bind_attribute_location (int index, const std::string &name)=0
 Bind attribute to specific location. More...
 
virtual void bind_frag_data_location (int color_number, const std::string &name)=0
 Bind shader out variable a specific color buffer location. More...
 
virtual void detach (const ShaderObjectPtr &obj)=0
 Remove shader from program object. More...
 
virtual std::string info_log () const =0
 Returns the current info log for the program object. More...
 
virtual void link ()=0
 Link program. More...
 
virtual void set_storage_buffer_index (const std::string &block_name, int bind_index)=0
 
virtual void set_storage_buffer_index (int block_index, int bind_index)=0
 
virtual void set_uniform1f (int location, float value_a)=0
 
void set_uniform1f (const std::string &name, float value_a)
 
virtual void set_uniform1i (int location, int value_a)=0
 
void set_uniform1i (const std::string &name, int value_a)
 
void set_uniform2b (int location, const Vec2b &vec)
 
void set_uniform2b (const std::string &name, const Vec2b &vec)
 
virtual void set_uniform2f (int location, float value_a, float value_b)=0
 
void set_uniform2f (int location, const Vec2f &vec)
 
void set_uniform2f (const std::string &name, float value_a, float value_b)
 
void set_uniform2f (const std::string &name, const Vec2f &vec)
 
virtual void set_uniform2i (int location, int value_a, int value_b)=0
 
void set_uniform2i (int location, const Vec2i &vec)
 
void set_uniform2i (const std::string &name, int value_a, int value_b)
 
void set_uniform2i (const std::string &name, const Vec2i &vec)
 
void set_uniform2s (int location, const Vec2s &vec)
 
void set_uniform2s (const std::string &name, const Vec2s &vec)
 
void set_uniform3b (int location, const Vec3b &vec)
 
void set_uniform3b (const std::string &name, const Vec3b &vec)
 
virtual void set_uniform3f (int location, float value_a, float value_b, float value_c)=0
 
void set_uniform3f (int location, const Vec3f &vec)
 
void set_uniform3f (const std::string &name, float value_a, float value_b, float value_c)
 
void set_uniform3f (const std::string &name, const Vec3f &vec)
 
virtual void set_uniform3i (int location, int value_a, int value_b, int value_c)=0
 
void set_uniform3i (int location, const Vec3i &vec)
 
void set_uniform3i (const std::string &name, int value_a, int value_b, int value_c)
 
void set_uniform3i (const std::string &name, const Vec3i &vec)
 
void set_uniform3s (int location, const Vec3s &vec)
 
void set_uniform3s (const std::string &name, const Vec3s &vec)
 
void set_uniform4b (int location, const Vec4b &vec)
 
void set_uniform4b (const std::string &name, const Vec4b &vec)
 
virtual void set_uniform4f (int location, float value_a, float value_b, float value_c, float value_d)=0
 
void set_uniform4f (int location, const Vec4f &vec)
 
void set_uniform4f (const std::string &name, float value_a, float value_b, float value_c, float value_d)
 
void set_uniform4f (const std::string &name, const Vec4f &vec)
 
virtual void set_uniform4i (int location, int value_a, int value_b, int value_c, int value_d)=0
 
void set_uniform4i (int location, const Vec4i &vec)
 
void set_uniform4i (const std::string &name, int value_a, int value_b, int value_c, int value_d)
 
void set_uniform4i (const std::string &name, const Vec4i &vec)
 
void set_uniform4s (int location, const Vec4s &vec)
 
void set_uniform4s (const std::string &name, const Vec4s &vec)
 
virtual void set_uniform_buffer_index (const std::string &block_name, int bind_index)=0
 
virtual void set_uniform_buffer_index (int block_index, int bind_index)=0
 
virtual void set_uniform_matrix (int location, int size, int count, bool transpose, const float *data)=0
 
void set_uniform_matrix (int location, const Mat2f &matrix)
 
void set_uniform_matrix (int location, const Mat3f &matrix)
 
void set_uniform_matrix (int location, const Mat4f &matrix)
 
void set_uniform_matrix (int location, int count, const Mat2f *matrix)
 
void set_uniform_matrix (int location, int count, const Mat3f *matrix)
 
void set_uniform_matrix (int location, int count, const Mat4f *matrix)
 
void set_uniform_matrix (const std::string &name, int size, int count, bool transpose, const float *data)
 
void set_uniform_matrix (const std::string &name, const Mat2f &matrix)
 
void set_uniform_matrix (const std::string &name, const Mat3f &matrix)
 
void set_uniform_matrix (const std::string &name, const Mat4f &matrix)
 
void set_uniform_matrix (const std::string &name, int count, const Mat2f *matrix)
 
void set_uniform_matrix (const std::string &name, int count, const Mat3f *matrix)
 
void set_uniform_matrix (const std::string &name, int count, const Mat4f *matrix)
 
virtual void set_uniformfv (int location, int size, int count, const float *data)=0
 
void set_uniformfv (int location, int count, const Vec2f *data)
 
void set_uniformfv (int location, int count, const Vec3f *data)
 
void set_uniformfv (int location, int count, const Vec4f *data)
 
void set_uniformfv (const std::string &name, int size, int count, const float *data)
 
void set_uniformfv (const std::string &name, int count, const Vec2f *data)
 
void set_uniformfv (const std::string &name, int count, const Vec3f *data)
 
void set_uniformfv (const std::string &name, int count, const Vec4f *data)
 
virtual void set_uniformiv (int location, int size, int count, const int *data)=0
 
void set_uniformiv (int location, int count, const Vec2i *data)
 
void set_uniformiv (int location, int count, const Vec3i *data)
 
void set_uniformiv (int location, int count, const Vec4i *data)
 
void set_uniformiv (const std::string &name, int size, int count, const int *data)
 
void set_uniformiv (const std::string &name, int count, const Vec2i *data)
 
void set_uniformiv (const std::string &name, int count, const Vec3i *data)
 
void set_uniformiv (const std::string &name, int count, const Vec4i *data)
 
virtual std::vector< ShaderObjectPtrshaders () const =0
 Returns the shaders attached to the program object. More...
 
virtual int storage_buffer_index (const std::string &name) const =0
 Get the storage buffer index. More...
 
virtual bool try_link ()=0
 Link program. More...
 
virtual int uniform_buffer_index (const std::string &block_name) const =0
 Get the uniform block index. More...
 
virtual int uniform_buffer_size (const std::string &block_name) const =0
 Get the uniform block size. More...
 
virtual int uniform_buffer_size (int block_index) const =0
 Get the uniform block size. More...
 
virtual int uniform_location (const std::string &name) const =0
 Returns the location of a named uniform variable. More...
 
virtual bool validate ()=0
 Validate program. More...
 

Static Public Member Functions

static std::shared_ptr< ProgramObjectcreate (const GraphicContextPtr &gc)
 Constructs a ProgramObject. More...
 
static std::shared_ptr< ProgramObjectload (const GraphicContextPtr &gc, const std::string &vertex_fullname, const std::string &fragment_fullname)
 Load. More...
 
static std::shared_ptr< ProgramObjectload (const GraphicContextPtr &gc, const std::string &vertex_fullname, const std::string &geometry_fullname, const std::string &fragment_fullname)
 
static std::shared_ptr< ProgramObjectload (const GraphicContextPtr &gc, const IODevicePtr &vertex_file, const IODevicePtr &fragment_file)
 
static std::shared_ptr< ProgramObjectload (const GraphicContextPtr &gc, const IODevicePtr &vertex_file, const IODevicePtr &geometry_file, const IODevicePtr &fragment_file)
 
static std::shared_ptr< ProgramObjectload_and_link (const GraphicContextPtr &gc, const std::string &vertex_fullname, const std::string &fragment_fullname)
 Load and link. More...
 
static std::shared_ptr< ProgramObjectload_and_link (const GraphicContextPtr &gc, const std::string &vertex_fullname, const std::string &geometry_fullname, const std::string &fragment_fullname)
 
static std::shared_ptr< ProgramObjectload_and_link (const GraphicContextPtr &gc, const IODevicePtr &vertex_file, const IODevicePtr &fragment_file)
 
static std::shared_ptr< ProgramObjectload_and_link (const GraphicContextPtr &gc, const IODevicePtr &vertex_file, const IODevicePtr &geometry_file, const IODevicePtr &fragment_file)
 

Detailed Description

Program Object.

Member Function Documentation

virtual void uicore::ProgramObject::attach ( const ShaderObjectPtr obj)
pure virtual

Add shader to program object.

virtual int uicore::ProgramObject::attribute_location ( const std::string name) const
pure virtual

Returns the location of a named active attribute.

Returns -1 when unknown

virtual void uicore::ProgramObject::bind_attribute_location ( int  index,
const std::string name 
)
pure virtual

Bind attribute to specific location.

This function must be called before linking.

virtual void uicore::ProgramObject::bind_frag_data_location ( int  color_number,
const std::string name 
)
pure virtual

Bind shader out variable a specific color buffer location.

This function must be called before linking.

static std::shared_ptr<ProgramObject> uicore::ProgramObject::create ( const GraphicContextPtr gc)
static

Constructs a ProgramObject.

virtual void uicore::ProgramObject::detach ( const ShaderObjectPtr obj)
pure virtual

Remove shader from program object.

virtual std::string uicore::ProgramObject::info_log ( ) const
pure virtual

Returns the current info log for the program object.

virtual void uicore::ProgramObject::link ( )
pure virtual

Link program.

If the linking fails an exception will be thrown

static std::shared_ptr<ProgramObject> uicore::ProgramObject::load ( const GraphicContextPtr gc,
const std::string vertex_fullname,
const std::string fragment_fullname 
)
static

Load.

static std::shared_ptr<ProgramObject> uicore::ProgramObject::load ( const GraphicContextPtr gc,
const std::string vertex_fullname,
const std::string geometry_fullname,
const std::string fragment_fullname 
)
static
static std::shared_ptr<ProgramObject> uicore::ProgramObject::load ( const GraphicContextPtr gc,
const IODevicePtr vertex_file,
const IODevicePtr fragment_file 
)
static
static std::shared_ptr<ProgramObject> uicore::ProgramObject::load ( const GraphicContextPtr gc,
const IODevicePtr vertex_file,
const IODevicePtr geometry_file,
const IODevicePtr fragment_file 
)
static
static std::shared_ptr<ProgramObject> uicore::ProgramObject::load_and_link ( const GraphicContextPtr gc,
const std::string vertex_fullname,
const std::string fragment_fullname 
)
static

Load and link.

static std::shared_ptr<ProgramObject> uicore::ProgramObject::load_and_link ( const GraphicContextPtr gc,
const std::string vertex_fullname,
const std::string geometry_fullname,
const std::string fragment_fullname 
)
static
static std::shared_ptr<ProgramObject> uicore::ProgramObject::load_and_link ( const GraphicContextPtr gc,
const IODevicePtr vertex_file,
const IODevicePtr fragment_file 
)
static
static std::shared_ptr<ProgramObject> uicore::ProgramObject::load_and_link ( const GraphicContextPtr gc,
const IODevicePtr vertex_file,
const IODevicePtr geometry_file,
const IODevicePtr fragment_file 
)
static
virtual void uicore::ProgramObject::set_storage_buffer_index ( const std::string block_name,
int  bind_index 
)
pure virtual
virtual void uicore::ProgramObject::set_storage_buffer_index ( int  block_index,
int  bind_index 
)
pure virtual
virtual void uicore::ProgramObject::set_uniform1f ( int  location,
float  value_a 
)
pure virtual
void uicore::ProgramObject::set_uniform1f ( const std::string name,
float  value_a 
)
inline

References set_uniform1f(), and uniform_location().

Referenced by set_uniform1f().

virtual void uicore::ProgramObject::set_uniform1i ( int  location,
int  value_a 
)
pure virtual
void uicore::ProgramObject::set_uniform1i ( const std::string name,
int  value_a 
)
inline

References set_uniform1i(), and uniform_location().

Referenced by set_uniform1i().

void uicore::ProgramObject::set_uniform2b ( int  location,
const Vec2b vec 
)
inline
void uicore::ProgramObject::set_uniform2b ( const std::string name,
const Vec2b vec 
)
inline

References set_uniform2b(), and uniform_location().

Referenced by set_uniform2b().

virtual void uicore::ProgramObject::set_uniform2f ( int  location,
float  value_a,
float  value_b 
)
pure virtual
void uicore::ProgramObject::set_uniform2f ( int  location,
const Vec2f vec 
)
inline
void uicore::ProgramObject::set_uniform2f ( const std::string name,
float  value_a,
float  value_b 
)
inline

References set_uniform2f(), and uniform_location().

Referenced by set_uniform2f().

void uicore::ProgramObject::set_uniform2f ( const std::string name,
const Vec2f vec 
)
inline

References set_uniform2f(), and uniform_location().

Referenced by set_uniform2f().

virtual void uicore::ProgramObject::set_uniform2i ( int  location,
int  value_a,
int  value_b 
)
pure virtual

Referenced by set_uniform2b(), and set_uniform2s().

void uicore::ProgramObject::set_uniform2i ( int  location,
const Vec2i vec 
)
inline
void uicore::ProgramObject::set_uniform2i ( const std::string name,
int  value_a,
int  value_b 
)
inline

References set_uniform2i(), and uniform_location().

Referenced by set_uniform2i().

void uicore::ProgramObject::set_uniform2i ( const std::string name,
const Vec2i vec 
)
inline

References set_uniform2i(), and uniform_location().

Referenced by set_uniform2i().

void uicore::ProgramObject::set_uniform2s ( int  location,
const Vec2s vec 
)
inline
void uicore::ProgramObject::set_uniform2s ( const std::string name,
const Vec2s vec 
)
inline

References set_uniform2s(), and uniform_location().

Referenced by set_uniform2s().

void uicore::ProgramObject::set_uniform3b ( int  location,
const Vec3b vec 
)
inline
void uicore::ProgramObject::set_uniform3b ( const std::string name,
const Vec3b vec 
)
inline

References set_uniform3b(), and uniform_location().

Referenced by set_uniform3b().

virtual void uicore::ProgramObject::set_uniform3f ( int  location,
float  value_a,
float  value_b,
float  value_c 
)
pure virtual
void uicore::ProgramObject::set_uniform3f ( int  location,
const Vec3f vec 
)
inline
void uicore::ProgramObject::set_uniform3f ( const std::string name,
float  value_a,
float  value_b,
float  value_c 
)
inline

References set_uniform3f(), and uniform_location().

Referenced by set_uniform3f().

void uicore::ProgramObject::set_uniform3f ( const std::string name,
const Vec3f vec 
)
inline

References set_uniform3f(), and uniform_location().

Referenced by set_uniform3f().

virtual void uicore::ProgramObject::set_uniform3i ( int  location,
int  value_a,
int  value_b,
int  value_c 
)
pure virtual

Referenced by set_uniform3b(), and set_uniform3s().

void uicore::ProgramObject::set_uniform3i ( int  location,
const Vec3i vec 
)
inline
void uicore::ProgramObject::set_uniform3i ( const std::string name,
int  value_a,
int  value_b,
int  value_c 
)
inline

References set_uniform3i(), and uniform_location().

Referenced by set_uniform3i().

void uicore::ProgramObject::set_uniform3i ( const std::string name,
const Vec3i vec 
)
inline

References set_uniform3i(), and uniform_location().

Referenced by set_uniform3i().

void uicore::ProgramObject::set_uniform3s ( int  location,
const Vec3s vec 
)
inline
void uicore::ProgramObject::set_uniform3s ( const std::string name,
const Vec3s vec 
)
inline

References set_uniform3s(), and uniform_location().

Referenced by set_uniform3s().

void uicore::ProgramObject::set_uniform4b ( int  location,
const Vec4b vec 
)
inline
void uicore::ProgramObject::set_uniform4b ( const std::string name,
const Vec4b vec 
)
inline

References set_uniform4b(), and uniform_location().

Referenced by set_uniform4b().

virtual void uicore::ProgramObject::set_uniform4f ( int  location,
float  value_a,
float  value_b,
float  value_c,
float  value_d 
)
pure virtual
void uicore::ProgramObject::set_uniform4f ( int  location,
const Vec4f vec 
)
inline
void uicore::ProgramObject::set_uniform4f ( const std::string name,
float  value_a,
float  value_b,
float  value_c,
float  value_d 
)
inline

References set_uniform4f(), and uniform_location().

Referenced by set_uniform4f().

void uicore::ProgramObject::set_uniform4f ( const std::string name,
const Vec4f vec 
)
inline

References set_uniform4f(), and uniform_location().

Referenced by set_uniform4f().

virtual void uicore::ProgramObject::set_uniform4i ( int  location,
int  value_a,
int  value_b,
int  value_c,
int  value_d 
)
pure virtual

Referenced by set_uniform4b(), and set_uniform4s().

void uicore::ProgramObject::set_uniform4i ( int  location,
const Vec4i vec 
)
inline
void uicore::ProgramObject::set_uniform4i ( const std::string name,
int  value_a,
int  value_b,
int  value_c,
int  value_d 
)
inline

References set_uniform4i(), and uniform_location().

Referenced by set_uniform4i().

void uicore::ProgramObject::set_uniform4i ( const std::string name,
const Vec4i vec 
)
inline

References set_uniform4i(), and uniform_location().

Referenced by set_uniform4i().

void uicore::ProgramObject::set_uniform4s ( int  location,
const Vec4s vec 
)
inline
void uicore::ProgramObject::set_uniform4s ( const std::string name,
const Vec4s vec 
)
inline

References set_uniform4s(), and uniform_location().

Referenced by set_uniform4s().

virtual void uicore::ProgramObject::set_uniform_buffer_index ( const std::string block_name,
int  bind_index 
)
pure virtual
virtual void uicore::ProgramObject::set_uniform_buffer_index ( int  block_index,
int  bind_index 
)
pure virtual
virtual void uicore::ProgramObject::set_uniform_matrix ( int  location,
int  size,
int  count,
bool  transpose,
const float *  data 
)
pure virtual
void uicore::ProgramObject::set_uniform_matrix ( int  location,
const Mat2f matrix 
)
inline
void uicore::ProgramObject::set_uniform_matrix ( int  location,
const Mat3f matrix 
)
inline
void uicore::ProgramObject::set_uniform_matrix ( int  location,
const Mat4f matrix 
)
inline
void uicore::ProgramObject::set_uniform_matrix ( int  location,
int  count,
const Mat2f matrix 
)
inline
void uicore::ProgramObject::set_uniform_matrix ( int  location,
int  count,
const Mat3f matrix 
)
inline
void uicore::ProgramObject::set_uniform_matrix ( int  location,
int  count,
const Mat4f matrix 
)
inline
void uicore::ProgramObject::set_uniform_matrix ( const std::string name,
int  size,
int  count,
bool  transpose,
const float *  data 
)
inline
void uicore::ProgramObject::set_uniform_matrix ( const std::string name,
const Mat2f matrix 
)
inline
void uicore::ProgramObject::set_uniform_matrix ( const std::string name,
const Mat3f matrix 
)
inline
void uicore::ProgramObject::set_uniform_matrix ( const std::string name,
const Mat4f matrix 
)
inline
void uicore::ProgramObject::set_uniform_matrix ( const std::string name,
int  count,
const Mat2f matrix 
)
inline
void uicore::ProgramObject::set_uniform_matrix ( const std::string name,
int  count,
const Mat3f matrix 
)
inline
void uicore::ProgramObject::set_uniform_matrix ( const std::string name,
int  count,
const Mat4f matrix 
)
inline
virtual void uicore::ProgramObject::set_uniformfv ( int  location,
int  size,
int  count,
const float *  data 
)
pure virtual
void uicore::ProgramObject::set_uniformfv ( int  location,
int  count,
const Vec2f data 
)
inline

References set_uniformfv(), and uicore::Vec2< Type >::x.

Referenced by set_uniformfv().

void uicore::ProgramObject::set_uniformfv ( int  location,
int  count,
const Vec3f data 
)
inline

References set_uniformfv(), and uicore::Vec3< Type >::x.

Referenced by set_uniformfv().

void uicore::ProgramObject::set_uniformfv ( int  location,
int  count,
const Vec4f data 
)
inline

References set_uniformfv(), and uicore::Vec4< Type >::x.

Referenced by set_uniformfv().

void uicore::ProgramObject::set_uniformfv ( const std::string name,
int  size,
int  count,
const float *  data 
)
inline

References set_uniformfv(), and uniform_location().

Referenced by set_uniformfv().

void uicore::ProgramObject::set_uniformfv ( const std::string name,
int  count,
const Vec2f data 
)
inline

References set_uniformfv(), and uniform_location().

Referenced by set_uniformfv().

void uicore::ProgramObject::set_uniformfv ( const std::string name,
int  count,
const Vec3f data 
)
inline

References set_uniformfv(), and uniform_location().

Referenced by set_uniformfv().

void uicore::ProgramObject::set_uniformfv ( const std::string name,
int  count,
const Vec4f data 
)
inline

References set_uniformfv(), and uniform_location().

Referenced by set_uniformfv().

virtual void uicore::ProgramObject::set_uniformiv ( int  location,
int  size,
int  count,
const int *  data 
)
pure virtual
void uicore::ProgramObject::set_uniformiv ( int  location,
int  count,
const Vec2i data 
)
inline

References set_uniformiv(), and uicore::Vec2< Type >::x.

Referenced by set_uniformiv().

void uicore::ProgramObject::set_uniformiv ( int  location,
int  count,
const Vec3i data 
)
inline

References set_uniformiv(), and uicore::Vec3< Type >::x.

Referenced by set_uniformiv().

void uicore::ProgramObject::set_uniformiv ( int  location,
int  count,
const Vec4i data 
)
inline

References set_uniformiv(), and uicore::Vec4< Type >::x.

Referenced by set_uniformiv().

void uicore::ProgramObject::set_uniformiv ( const std::string name,
int  size,
int  count,
const int *  data 
)
inline

References set_uniformiv(), and uniform_location().

Referenced by set_uniformiv().

void uicore::ProgramObject::set_uniformiv ( const std::string name,
int  count,
const Vec2i data 
)
inline

References set_uniformiv(), and uniform_location().

Referenced by set_uniformiv().

void uicore::ProgramObject::set_uniformiv ( const std::string name,
int  count,
const Vec3i data 
)
inline

References set_uniformiv(), and uniform_location().

Referenced by set_uniformiv().

void uicore::ProgramObject::set_uniformiv ( const std::string name,
int  count,
const Vec4i data 
)
inline

References set_uniformiv(), and uniform_location().

Referenced by set_uniformiv().

virtual std::vector<ShaderObjectPtr> uicore::ProgramObject::shaders ( ) const
pure virtual

Returns the shaders attached to the program object.

virtual int uicore::ProgramObject::storage_buffer_index ( const std::string name) const
pure virtual

Get the storage buffer index.

Returns -1 when the block index was not found

virtual bool uicore::ProgramObject::try_link ( )
pure virtual

Link program.

If the linking fails, info_log() will return the link log

virtual int uicore::ProgramObject::uniform_buffer_index ( const std::string block_name) const
pure virtual

Get the uniform block index.

Returns -1 when the block index was not found

virtual int uicore::ProgramObject::uniform_buffer_size ( const std::string block_name) const
pure virtual

Get the uniform block size.

An exception is thrown of block_name was not found

Returns -1 when unknown

virtual int uicore::ProgramObject::uniform_buffer_size ( int  block_index) const
pure virtual

Get the uniform block size.

virtual int uicore::ProgramObject::uniform_location ( const std::string name) const
pure virtual
virtual bool uicore::ProgramObject::validate ( )
pure virtual

Validate program.

If the validation fails, info_log() will return the validation log


The documentation for this class was generated from the following file: