CL_ProgramObject Class Reference
[clanDisplay Display]

OpenGL Program Object. More...

#include <program_object.h>

List of all members.

Construction

 CL_ProgramObject ()
 Construct OpenGL program object.
 CL_ProgramObject (CL_GraphicContext &gc)
 Constructs a ProgramObject.
 CL_ProgramObject (CL_GraphicContextProvider *gc_provider)
 Constructs a ProgramObject.
virtual ~CL_ProgramObject ()
static CL_ProgramObject load (CL_GraphicContext &gc, const CL_StringRef &resource_id, CL_ResourceManager *resman)
 Load.
static CL_ProgramObject load (CL_GraphicContext &gc, const CL_StringRef &vertex_fullname, const CL_StringRef &fragment_fullname)
 Load.
static CL_ProgramObject load (CL_GraphicContext &gc, const CL_StringRef &vertex_filename, const CL_StringRef &fragment_filename, const CL_VirtualDirectory &directory)
 Load.
static CL_ProgramObject load (CL_GraphicContext &gc, CL_IODevice &vertex_file, CL_IODevice &fragment_file)
 Load.
static CL_ProgramObject load (CL_GraphicContext &gc, const CL_StringRef &fragment_fullname)
 Load.
static CL_ProgramObject load (CL_GraphicContext &gc, const CL_StringRef &fragment_filename, const CL_VirtualDirectory &directory)
 Load.
static CL_ProgramObject load (CL_GraphicContext &gc, CL_IODevice &fragment_file)
 Load.
static CL_ProgramObject load_and_link (CL_GraphicContext &gc, const CL_StringRef &vertex_fullname, const CL_StringRef &fragment_fullname)
 Load and link.
static CL_ProgramObject load_and_link (CL_GraphicContext &gc, const CL_StringRef &vertex_filename, const CL_StringRef &fragment_filename, const CL_VirtualDirectory &directory)
 Load and link.
static CL_ProgramObject load_and_link (CL_GraphicContext &gc, CL_IODevice &vertex_file, CL_IODevice &fragment_file)
 Load and link.
static CL_ProgramObject load_and_link (CL_GraphicContext &gc, const CL_StringRef &fragment_fullname)
 Load and link.
static CL_ProgramObject load_and_link (CL_GraphicContext &gc, const CL_StringRef &fragment_filename, const CL_VirtualDirectory &directory)
 Load and link.
static CL_ProgramObject load_and_link (CL_GraphicContext &gc, CL_IODevice &fragment_file)
 Load and link.

Public Member Functions

Attributes
bool is_null () const
 Returns true if the Program object is a dummy.
unsigned int get_handle () const
 Returns the OpenGL program object handle.
std::vector< CL_ShaderObjectget_shaders () const
 Returns the shaders attached to the program object.
CL_String get_info_log () const
 Returns the current info log for the program object.
int get_attribute_count () const
 Returns the count of active attributes.
std::vector< CL_ProgramAttributeget_attributes () const
 Returns the active attributes.
int get_attribute_location (const CL_StringRef &name) const
 Returns the location of a named active attribute.
int get_uniform_count () const
 Returns the count of active uniform variables.
std::vector< CL_ProgramUniformget_uniforms () const
 Returns the active uniforms.
int get_uniform_location (const CL_StringRef &name) const
 Returns the location of a named uniform variable.
Operations
void attach (const CL_ShaderObject &obj)
 Add shader to program object.
void detach (const CL_ShaderObject &obj)
 Remove shader from program object.
void bind_attribute_location (int index, const CL_StringRef &name)
 Bind attribute to specific location.
bool link ()
 Link program.
bool validate ()
 Validate program.
void set_uniform1i (const CL_StringRef &name, int)
 Set uniform variable(s).
void set_uniform2i (const CL_StringRef &name, int, int)
 Set uniform2i.
void set_uniform3i (const CL_StringRef &name, int, int, int)
void set_uniform4i (const CL_StringRef &name, int, int, int, int)
 Set uniform4i.
void set_uniformiv (const CL_StringRef &name, int size, int count, int *data)
 Set uniformiv.
void set_uniform2i (const CL_StringRef &name, CL_Vec2i vec)
 Set uniform2i.
void set_uniform3i (const CL_StringRef &name, CL_Vec3i vec)
 Set uniform3i.
void set_uniform4i (const CL_StringRef &name, CL_Vec4i vec)
 Set uniform4i.
void set_uniform2s (const CL_StringRef &name, CL_Vec2s vec)
 Set uniform2s.
void set_uniform3s (const CL_StringRef &name, CL_Vec3s vec)
 Set uniform3s.
void set_uniform4s (const CL_StringRef &name, CL_Vec4s vec)
 Set uniform4s.
void set_uniform2b (const CL_StringRef &name, CL_Vec2b vec)
 Set uniform2b.
void set_uniform3b (const CL_StringRef &name, CL_Vec3b vec)
 Set uniform3b.
void set_uniform4b (const CL_StringRef &name, CL_Vec4b vec)
 Set uniform4b.
void set_uniformiv (const CL_StringRef &name, int count, CL_Vec2i *data)
 Set uniformiv.
void set_uniformiv (const CL_StringRef &name, int count, CL_Vec3i *data)
 Set uniformiv.
void set_uniformiv (const CL_StringRef &name, int count, CL_Vec4i *data)
 Set uniformiv.
void set_uniform1f (const CL_StringRef &name, float)
void set_uniform2f (const CL_StringRef &name, float, float)
 Set uniform2f.
void set_uniform3f (const CL_StringRef &name, float, float, float)
void set_uniform4f (const CL_StringRef &name, float, float, float, float)
 Set uniform4f.
void set_uniformfv (const CL_StringRef &name, int size, int count, float *data)
 Set uniformfv.
void set_uniform2f (const CL_StringRef &name, CL_Vec2f vec)
 Set uniform2f.
void set_uniform3f (const CL_StringRef &name, CL_Vec3f vec)
 Set uniform3f.
void set_uniform4f (const CL_StringRef &name, CL_Vec4f vec)
 Set uniform4f.
void set_uniformfv (const CL_StringRef &name, int count, CL_Vec2f *data)
 Set uniformfv.
void set_uniformfv (const CL_StringRef &name, int count, CL_Vec3f *data)
 Set uniformfv.
void set_uniformfv (const CL_StringRef &name, int count, CL_Vec4f *data)
 Set uniformfv.
void set_uniform_matrix (const CL_StringRef &name, int size, int count, bool transpose, float *data)
 Set uniform matrices.
void set_uniform_matrix (const CL_StringRef &name, CL_Mat2f matrix)
 Set uniform matrix.
void set_uniform_matrix (const CL_StringRef &name, CL_Mat3f matrix)
 Set uniform matrix.
void set_uniform_matrix (const CL_StringRef &name, CL_Mat4f matrix)
 Set uniform matrix.
void set_uniform_matrix (const CL_StringRef &name, int count, CL_Mat2f *matrix)
 Set uniform matrix.
void set_uniform_matrix (const CL_StringRef &name, int count, CL_Mat3f *matrix)
 Set uniform matrix.
void set_uniform_matrix (const CL_StringRef &name, int count, CL_Mat4f *matrix)
 Set uniform matrix.


Detailed Description

OpenGL Program Object.

The shader objects that are to be used by programmable stages of OpenGL are collected together to form a program object. CL_ProgramObject is ClanLib's C++ interface to OpenGL program objects.

To construct a program object programatically, the procedure is as follows:

       CL_ShaderObject vertex_shader(cl_shadertype_vertex, vertex_glsl_sourcecode);
       CL_ShaderObject fragment_shader(cl_shadertype_fragment, fragment_glsl_sourcecode);
       CL_ProgramObject program;
       program.attach(vertex_shader);
       program.attach(fragment_shader);
       program.link();
       

For more information about program objects, see the OpenGL 2.0 specification at www.opengl.org. Documentation about the OpenGL Shader Language (GLSL) is also available from www.opengl.org.


Constructor & Destructor Documentation

CL_ProgramObject::CL_ProgramObject  ) 
 

Construct OpenGL program object.

Parameters:
resource_id Name of program object resource.
vdir Virtual directory holding the file to load.

CL_ProgramObject::CL_ProgramObject CL_GraphicContext gc  ) 
 

Constructs a ProgramObject.

Parameters:
gc = Graphic Context

CL_ProgramObject::CL_ProgramObject CL_GraphicContextProvider gc_provider  ) 
 

Constructs a ProgramObject.

Parameters:
gc_provider = Graphic Context Provider

virtual CL_ProgramObject::~CL_ProgramObject  )  [virtual]
 


Member Function Documentation

void CL_ProgramObject::attach const CL_ShaderObject obj  ) 
 

Add shader to program object.

void CL_ProgramObject::bind_attribute_location int  index,
const CL_StringRef name
 

Bind attribute to specific location.

This function must be called before linking.

void CL_ProgramObject::detach const CL_ShaderObject obj  ) 
 

Remove shader from program object.

int CL_ProgramObject::get_attribute_count  )  const
 

Returns the count of active attributes.

int CL_ProgramObject::get_attribute_location const CL_StringRef name  )  const
 

Returns the location of a named active attribute.

std::vector<CL_ProgramAttribute> CL_ProgramObject::get_attributes  )  const
 

Returns the active attributes.

unsigned int CL_ProgramObject::get_handle  )  const
 

Returns the OpenGL program object handle.

CL_String CL_ProgramObject::get_info_log  )  const
 

Returns the current info log for the program object.

std::vector<CL_ShaderObject> CL_ProgramObject::get_shaders  )  const
 

Returns the shaders attached to the program object.

int CL_ProgramObject::get_uniform_count  )  const
 

Returns the count of active uniform variables.

int CL_ProgramObject::get_uniform_location const CL_StringRef name  )  const
 

Returns the location of a named uniform variable.

std::vector<CL_ProgramUniform> CL_ProgramObject::get_uniforms  )  const
 

Returns the active uniforms.

bool CL_ProgramObject::is_null  )  const
 

Returns true if the Program object is a dummy.

bool CL_ProgramObject::link  ) 
 

Link program.

If the linking fails, get_info_log() will return the link log.

static CL_ProgramObject CL_ProgramObject::load CL_GraphicContext gc,
CL_IODevice fragment_file
[static]
 

Load.

Parameters:
gc = Graphic Context
fragment_file = IODevice
Returns:
Program Object

static CL_ProgramObject CL_ProgramObject::load CL_GraphicContext gc,
const CL_StringRef fragment_filename,
const CL_VirtualDirectory directory
[static]
 

Load.

Parameters:
gc = Graphic Context
fragment_filename = String Ref
directory = Virtual Directory
Returns:
Program Object

static CL_ProgramObject CL_ProgramObject::load CL_GraphicContext gc,
const CL_StringRef fragment_fullname
[static]
 

Load.

Parameters:
gc = Graphic Context
fragment_fullname = String Ref
Returns:
Program Object

static CL_ProgramObject CL_ProgramObject::load CL_GraphicContext gc,
CL_IODevice vertex_file,
CL_IODevice fragment_file
[static]
 

Load.

Parameters:
gc = Graphic Context
vertex_file = IODevice
fragment_file = IODevice
Returns:
Program Object

static CL_ProgramObject CL_ProgramObject::load CL_GraphicContext gc,
const CL_StringRef vertex_filename,
const CL_StringRef fragment_filename,
const CL_VirtualDirectory directory
[static]
 

Load.

Parameters:
gc = Graphic Context
vertex_filename = String Ref
fragment_filename = String Ref
directory = Virtual Directory
Returns:
Program Object

static CL_ProgramObject CL_ProgramObject::load CL_GraphicContext gc,
const CL_StringRef vertex_fullname,
const CL_StringRef fragment_fullname
[static]
 

Load.

Parameters:
gc = Graphic Context
vertex_fullname = String Ref
fragment_fullname = String Ref
Returns:
Program Object

static CL_ProgramObject CL_ProgramObject::load CL_GraphicContext gc,
const CL_StringRef resource_id,
CL_ResourceManager resman
[static]
 

Load.

Parameters:
gc = Graphic Context
resource_id = String Ref
resman = Resource Manager
Returns:
Program Object

static CL_ProgramObject CL_ProgramObject::load_and_link CL_GraphicContext gc,
CL_IODevice fragment_file
[static]
 

Load and link.

Parameters:
gc = Graphic Context
fragment_file = IODevice
Returns:
Program Object

static CL_ProgramObject CL_ProgramObject::load_and_link CL_GraphicContext gc,
const CL_StringRef fragment_filename,
const CL_VirtualDirectory directory
[static]
 

Load and link.

Parameters:
gc = Graphic Context
fragment_filename = String Ref
directory = Virtual Directory
Returns:
Program Object

static CL_ProgramObject CL_ProgramObject::load_and_link CL_GraphicContext gc,
const CL_StringRef fragment_fullname
[static]
 

Load and link.

Parameters:
gc = Graphic Context
fragment_fullname = String Ref
Returns:
Program Object

static CL_ProgramObject CL_ProgramObject::load_and_link CL_GraphicContext gc,
CL_IODevice vertex_file,
CL_IODevice fragment_file
[static]
 

Load and link.

Parameters:
gc = Graphic Context
vertex_file = IODevice
fragment_file = IODevice
Returns:
Program Object

static CL_ProgramObject CL_ProgramObject::load_and_link CL_GraphicContext gc,
const CL_StringRef vertex_filename,
const CL_StringRef fragment_filename,
const CL_VirtualDirectory directory
[static]
 

Load and link.

Parameters:
gc = Graphic Context
vertex_filename = String Ref
fragment_filename = String Ref
directory = Virtual Directory
Returns:
Program Object

static CL_ProgramObject CL_ProgramObject::load_and_link CL_GraphicContext gc,
const CL_StringRef vertex_fullname,
const CL_StringRef fragment_fullname
[static]
 

Load and link.

Parameters:
gc = Graphic Context
vertex_fullname = String Ref
fragment_fullname = String Ref
Returns:
Program Object

void CL_ProgramObject::set_uniform1f const CL_StringRef name,
float 
 

void CL_ProgramObject::set_uniform1i const CL_StringRef name,
int 
 

Set uniform variable(s).

void CL_ProgramObject::set_uniform2b const CL_StringRef name,
CL_Vec2b  vec
[inline]
 

Set uniform2b.

Parameters:
name = String Ref
vec = Vec2b

void CL_ProgramObject::set_uniform2f const CL_StringRef name,
CL_Vec2f  vec
[inline]
 

Set uniform2f.

Parameters:
name = String Ref
vec = Vec2f

void CL_ProgramObject::set_uniform2f const CL_StringRef name,
float  ,
float 
 

Set uniform2f.

Parameters:
name = String Ref
float = value

void CL_ProgramObject::set_uniform2i const CL_StringRef name,
CL_Vec2i  vec
[inline]
 

Set uniform2i.

Parameters:
name = String Ref
vec = Vec2i

void CL_ProgramObject::set_uniform2i const CL_StringRef name,
int  ,
int 
 

Set uniform2i.

Parameters:
name = String Ref
int = value

void CL_ProgramObject::set_uniform2s const CL_StringRef name,
CL_Vec2s  vec
[inline]
 

Set uniform2s.

Parameters:
name = String Ref
vec = Vec2s

void CL_ProgramObject::set_uniform3b const CL_StringRef name,
CL_Vec3b  vec
[inline]
 

Set uniform3b.

Parameters:
name = String Ref
vec = Vec3b

void CL_ProgramObject::set_uniform3f const CL_StringRef name,
CL_Vec3f  vec
[inline]
 

Set uniform3f.

Parameters:
name = String Ref
vec = Vec3f

void CL_ProgramObject::set_uniform3f const CL_StringRef name,
float  ,
float  ,
float 
 

void CL_ProgramObject::set_uniform3i const CL_StringRef name,
CL_Vec3i  vec
[inline]
 

Set uniform3i.

Parameters:
name = String Ref
vec = Vec3i

void CL_ProgramObject::set_uniform3i const CL_StringRef name,
int  ,
int  ,
int 
 

void CL_ProgramObject::set_uniform3s const CL_StringRef name,
CL_Vec3s  vec
[inline]
 

Set uniform3s.

Parameters:
name = String Ref
vec = Vec3s

void CL_ProgramObject::set_uniform4b const CL_StringRef name,
CL_Vec4b  vec
[inline]
 

Set uniform4b.

Parameters:
name = String Ref
vec = Vec4b

void CL_ProgramObject::set_uniform4f const CL_StringRef name,
CL_Vec4f  vec
[inline]
 

Set uniform4f.

Parameters:
name = String Ref
vec = Vec4f

void CL_ProgramObject::set_uniform4f const CL_StringRef name,
float  ,
float  ,
float  ,
float 
 

Set uniform4f.

Parameters:
name = String Ref
float = value
float = value

void CL_ProgramObject::set_uniform4i const CL_StringRef name,
CL_Vec4i  vec
[inline]
 

Set uniform4i.

Parameters:
name = String Ref
vec = Vec4i

void CL_ProgramObject::set_uniform4i const CL_StringRef name,
int  ,
int  ,
int  ,
int 
 

Set uniform4i.

Parameters:
name = String Ref
int = value
int = value

void CL_ProgramObject::set_uniform4s const CL_StringRef name,
CL_Vec4s  vec
[inline]
 

Set uniform4s.

Parameters:
name = String Ref
vec = Vec4s

void CL_ProgramObject::set_uniform_matrix const CL_StringRef name,
int  count,
CL_Mat4f matrix
[inline]
 

Set uniform matrix.

Parameters:
name = String Ref
count = value
matrix = Mat4f

void CL_ProgramObject::set_uniform_matrix const CL_StringRef name,
int  count,
CL_Mat3f matrix
[inline]
 

Set uniform matrix.

Parameters:
name = String Ref
count = value
matrix = Mat3f

void CL_ProgramObject::set_uniform_matrix const CL_StringRef name,
int  count,
CL_Mat2f matrix
[inline]
 

Set uniform matrix.

Parameters:
name = String Ref
count = value
matrix = Mat2f

void CL_ProgramObject::set_uniform_matrix const CL_StringRef name,
CL_Mat4f  matrix
[inline]
 

Set uniform matrix.

Parameters:
name = String Ref
matrix = Mat4f

void CL_ProgramObject::set_uniform_matrix const CL_StringRef name,
CL_Mat3f  matrix
[inline]
 

Set uniform matrix.

Parameters:
name = String Ref
matrix = Mat3f

void CL_ProgramObject::set_uniform_matrix const CL_StringRef name,
CL_Mat2f  matrix
[inline]
 

Set uniform matrix.

Parameters:
name = String Ref
matrix = Mat2f

void CL_ProgramObject::set_uniform_matrix const CL_StringRef name,
int  size,
int  count,
bool  transpose,
float *  data
 

Set uniform matrices.

void CL_ProgramObject::set_uniformfv const CL_StringRef name,
int  count,
CL_Vec4f data
[inline]
 

Set uniformfv.

Parameters:
name = String Ref
count = value
data = Vec4f

void CL_ProgramObject::set_uniformfv const CL_StringRef name,
int  count,
CL_Vec3f data
[inline]
 

Set uniformfv.

Parameters:
name = String Ref
count = value
data = Vec3f

void CL_ProgramObject::set_uniformfv const CL_StringRef name,
int  count,
CL_Vec2f data
[inline]
 

Set uniformfv.

Parameters:
name = String Ref
count = value
data = Vec2f

void CL_ProgramObject::set_uniformfv const CL_StringRef name,
int  size,
int  count,
float *  data
 

Set uniformfv.

Parameters:
name = String Ref
size = value
count = value
data = value

void CL_ProgramObject::set_uniformiv const CL_StringRef name,
int  count,
CL_Vec4i data
[inline]
 

Set uniformiv.

Parameters:
name = String Ref
count = value
data = Vec4i

void CL_ProgramObject::set_uniformiv const CL_StringRef name,
int  count,
CL_Vec3i data
[inline]
 

Set uniformiv.

Parameters:
name = String Ref
count = value
data = Vec3i

void CL_ProgramObject::set_uniformiv const CL_StringRef name,
int  count,
CL_Vec2i data
[inline]
 

Set uniformiv.

Parameters:
name = String Ref
count = value
data = Vec2i

void CL_ProgramObject::set_uniformiv const CL_StringRef name,
int  size,
int  count,
int *  data
 

Set uniformiv.

Parameters:
name = String Ref
size = value
count = value
data = value

bool CL_ProgramObject::validate  ) 
 

Validate program.

If the validation fails, get_info_log() will return the validation log.


The documentation for this class was generated from the following file:
Generated on Thu Dec 3 02:39:39 2009 for ClanLib by  doxygen 1.4.6