UniShader
1.0.0a
Interface for GPGPU and working with shader programs
|
Shader program class. More...
#include <ShaderProgram.h>
Classes | |
class | LinkStatus |
Program ink status. More... | |
class | SignalID |
Signal identifier enum. More... | |
Public Types | |
typedef std::shared_ptr < ShaderProgram > | Ptr |
Shared pointer. | |
typedef std::shared_ptr< const ShaderProgram > | PtrConst |
Shared pointer. | |
Public Member Functions | |
virtual const std::string & | getClassName () const |
Get name of this class. | |
void | addShaderObject (ShaderObject::Ptr &shaderObjPtr) |
Add shader object. | |
bool | removeShaderObject (ShaderObject::Ptr &shaderObjPtr) |
Remove shader object. | |
ShaderInput::Ptr | getInput () |
Get shader input. | |
ShaderOutput::Ptr | getOutput () |
Get shader output. | |
unsigned int | getGlID () const |
Get OpenGL shader program identifier. | |
LinkStatus | getLinkStatus () const |
Get program link status. | |
bool | activate (PrimitiveType primitiveType, unsigned int primitiveCount) |
Activate. | |
bool | isActive () |
Is active? | |
bool | deactivate () |
Deactivate. | |
virtual bool | handleSignal (unsigned int signalID, const ObjectBase *callerPtr) |
Handle incoming signal. | |
Static Public Member Functions | |
static Ptr | create () |
Create shader program. |
Shader program class.
Shader program is set of instructions that are executed on graphics card hardware during programmable pipeline pass. Programmable pipeline consists of 3 stages that are executed in following order: Vertex, Geometry, Fragment.
Valid output is required for a single stage to be valid. Output is valid if it is passed from previous to next stage and eventualy used for computing final pixel color output in fragment stage or if it is recorded.
In vertex stage, vertices are processed one at a time. In geometry stage, primitives are processed one at a time. In fragment stage, final pixels are processed one at a time.
For further information see http://www.opengl.org/sdk/docs/tutorials/TyphoonLabs/Chapter_1.pdf
bool ShaderProgram::activate | ( | PrimitiveType | primitiveType, |
unsigned int | primitiveCount | ||
) |
Activate.
Activate program by modyfying OpenGL context. Also prepare underlying classes for use.
primitiveType | Primitive type that will be rendered. |
primitiveCount | Number of primitives that will be rendered. |
void ShaderProgram::addShaderObject | ( | ShaderObject::Ptr & | shaderObjPtr | ) |
Add shader object.
Add new shader object to shader program. If shader object is already part of shader program, function returns silently.
shaderObjPtr | Pointer to shader object. |
static Ptr ShaderProgram::create | ( | ) | [static] |
Create shader program.
bool ShaderProgram::deactivate | ( | ) |
Deactivate.
Return OpenGL context states modified by this class to their default state.
unsigned int ShaderProgram::getGlID | ( | ) | const |
Get OpenGL shader program identifier.
Get shader input.
Return pointer to shader input associated with this shader program.
LinkStatus ShaderProgram::getLinkStatus | ( | ) | const |
Get program link status.
Get shader output.
Return pointer to shader output associated with this shader program.
virtual bool ShaderProgram::handleSignal | ( | unsigned int | signalID, |
const ObjectBase * | callerPtr | ||
) | [virtual] |
Handle incoming signal.
signalID | Signal identifier. |
callerPtr | Pointer to object sending signal. |
Implements SignalReceiver.
bool ShaderProgram::isActive | ( | ) |
Is active?
Return if program is active.
bool ShaderProgram::removeShaderObject | ( | ShaderObject::Ptr & | shaderObjPtr | ) |
Remove shader object.
Remove new shader object to shader program. If shader object isn't part of shader program, function returns silently.
shaderObjPtr | Pointer to shader object. |