Allolib
1.0
C++ Components For Interactive Multimedia
|
Shader program object. More...
Classes | |
struct | Attribute |
Public Types | |
enum | Type { NONE = 0 , FLOAT , VEC2 , VEC3 , VEC4 , INT , INT2 , INT3 , INT4 , BOOL , BOOL2 , BOOL3 , BOOL4 , MAT22 , MAT33 , MAT44 , SAMPLER_1D , SAMPLER_2D , SAMPLER_RECT , SAMPLER_3D , SAMPLER_CUBE , SAMPLER_1D_SHADOW , SAMPLER_2D_SHADOW } |
Public Member Functions | |
virtual | ~ShaderProgram () |
Any attached shaders will automatically be detached, but not deleted. | |
ShaderProgram & | attach (Shader &s) |
Attach shader to program. More... | |
const ShaderProgram & | detach (const Shader &s) const |
Detach shader from program. | |
const ShaderProgram & | link (bool doValidate=true) const |
Link attached shaders. More... | |
bool | compile (const std::string &vertSource, const std::string &fragSource, const std::string &geomSource="") |
Compile and link shader sources. | |
const ShaderProgram & | use () |
void | begin () |
Begin use of shader program. | |
void | end () const |
End use of shader program. | |
bool | linked () const |
Returns whether program linked successfully. | |
bool | validateProgram (bool printLog=false) const |
Returns whether linked program can execute in current graphics state. | |
void | listParams () const |
Print out all the input parameters to the shader. | |
int | getUniformLocation (const char *name) const |
Get location of uniform. | |
int | getUniformLocation (const std::string &s) const |
int | attribute (const char *name) const |
Get location of attribute. | |
const ShaderProgram & | uniform (const char *name, const Color &c) const |
void | uniform4f (int loc, float v0, float v1, float v2, float v3) const |
void | uniformMat4f (int loc, float *data) const |
const ShaderProgram & | uniform (int loc, int v) const |
const ShaderProgram & | uniform (int loc, float v) const |
const ShaderProgram & | uniform (int loc, double v) const |
const ShaderProgram & | uniform (int loc, float v0, float v1) const |
const ShaderProgram & | uniform (int loc, float v0, float v1, float v2) const |
const ShaderProgram & | uniform (int loc, float v0, float v1, float v2, float v3) const |
const ShaderProgram & | uniform4v (int loc, const float *v, int count=1) const |
template<typename T > | |
const ShaderProgram & | uniform (int loc, const Vec< 2, T > &v) const |
template<typename T > | |
const ShaderProgram & | uniform (int loc, const Vec< 3, T > &v) const |
template<typename T > | |
const ShaderProgram & | uniform (int loc, const Vec< 4, T > &v) const |
const ShaderProgram & | uniformMatrix3 (int loc, const float *v, bool transpose=false) const |
const ShaderProgram & | uniformMatrix4 (int loc, const float *v, bool transpose=false) const |
const ShaderProgram & | uniform (int loc, const Mat< 4, float > &m) const |
template<typename T > | |
const ShaderProgram & | uniform (int loc, const Mat< 4, T > &m) const |
const ShaderProgram & | uniform (const char *name, int v) const |
const ShaderProgram & | uniform (const char *name, float v) const |
const ShaderProgram & | uniform (const char *name, double v) const |
const ShaderProgram & | uniform (const char *name, float v0, float v1) const |
const ShaderProgram & | uniform (const char *name, float v0, float v1, float v2) const |
const ShaderProgram & | uniform (const char *name, float v0, float v1, float v2, float v3) const |
template<typename T > | |
const ShaderProgram & | uniform (const char *name, const Vec< 2, T > &v) const |
template<typename T > | |
const ShaderProgram & | uniform (const char *name, const Vec< 3, T > &v) const |
template<typename T > | |
const ShaderProgram & | uniform (const char *name, const Vec< 4, T > &v) const |
const ShaderProgram & | uniform (const char *name, const Mat< 4, float > &m, bool transpose=false) const |
template<typename T > | |
const ShaderProgram & | uniform (const char *name, const Mat< 4, T > &m, bool transpose=false) const |
template<typename T > | |
const ShaderProgram & | uniform (const char *name, const Quat< T > &q) const |
const ShaderProgram & | uniform1 (const char *name, const float *v, int count=1) const |
const ShaderProgram & | uniform2 (const char *name, const float *v, int count=1) const |
const ShaderProgram & | uniform3 (const char *name, const float *v, int count=1) const |
const ShaderProgram & | uniform4 (const char *name, const float *v, int count=1) const |
const ShaderProgram & | uniformMatrix3 (const char *name, const float *v, bool transpose=false) const |
const ShaderProgram & | uniformMatrix4 (const char *name, const float *v, bool transpose=false) const |
const ShaderProgram & | attribute (int loc, float v) const |
const ShaderProgram & | attribute (int loc, float v0, float v1) const |
const ShaderProgram & | attribute (int loc, float v0, float v1, float v2) const |
const ShaderProgram & | attribute (int loc, float v0, float v1, float v2, float v3) const |
const ShaderProgram & | attribute (const char *name, float v) const |
const ShaderProgram & | attribute (const char *name, float v0, float v1) const |
const ShaderProgram & | attribute (const char *name, float v0, float v1, float v2) const |
const ShaderProgram & | attribute (const char *name, float v0, float v1, float v2, float v3) const |
const ShaderProgram & | attribute1 (const char *name, const float *v) const |
const ShaderProgram & | attribute2 (const char *name, const float *v) const |
const ShaderProgram & | attribute3 (const char *name, const float *v) const |
const ShaderProgram & | attribute4 (const char *name, const float *v) const |
const ShaderProgram & | attribute1 (int loc, const double *v) const |
const ShaderProgram & | attribute2 (int loc, const double *v) const |
const ShaderProgram & | attribute3 (int loc, const double *v) const |
const ShaderProgram & | attribute4 (int loc, const double *v) const |
template<typename T > | |
const ShaderProgram & | attribute (int loc, const Vec< 2, T > &v) const |
template<typename T > | |
const ShaderProgram & | attribute (int loc, const Vec< 3, T > &v) const |
template<typename T > | |
const ShaderProgram & | attribute (int loc, const Vec< 4, T > &v) const |
template<typename T > | |
const ShaderProgram & | attribute (int loc, const Quat< T > &q) const |
const char * | log () const |
Returns info log or 0 if none. | |
void | printLog () const |
Prints info log, if any. | |
bool | created () const |
Returns whether object has been created. | |
void | create () |
Creates object on GPU. | |
void | destroy () |
Destroys object on GPU. | |
unsigned long | id () const |
Returns the assigned object id. | |
void | id (unsigned long v) |
void | validate () |
Ensure that the GPUObject is ready to use. More... | |
void | invalidate () |
Triggers re-creation of object safely. | |
Static Public Member Functions | |
static void | use (unsigned programID) |
Protected Member Functions | |
virtual void | get (int pname, void *params) const |
virtual void | getLog (char *buf) const |
virtual void | onCreate () |
Called when currently assigned context is created. | |
virtual void | onDestroy () |
Called when currently assigned context is destroyed. | |
Shader program object.
A program object represents a useable part of render pipeline. It links one or more shader units into a single program object.
Definition at line 116 of file al_Shader.hpp.
The basic parameter types
Definition at line 121 of file al_Shader.hpp.
ShaderProgram& al::ShaderProgram::attach | ( | Shader & | s | ) |
Attach shader to program.
The input shader will be compiled if necessary.
const ShaderProgram& al::ShaderProgram::link | ( | bool | doValidate = true | ) | const |
Link attached shaders.
[in] | doValidate | validate program after linking; You might not want to do this if you need to set uniforms before validating, e.g., when using different texture sampler types in the same shader. |
|
inherited |
Ensure that the GPUObject is ready to use.
This is typically placed before any rendering implementation. If the object has been invalidated, the object will be destroyed and then created again. Otherwise, the object will simply be created if not already created.