UniShader  1.0.0a
Interface for GPGPU and working with shader programs
 All Classes Functions Typedefs Enumerations Enumerator
Classes | Public Types | Public Member Functions | Static Public Member Functions
ShaderProgram Class Reference

Shader program class. More...

#include <ShaderProgram.h>

Inheritance diagram for ShaderProgram:
SignalSender SignalReceiver ObjectBase

List of all members.

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.

Detailed Description

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


Member Function Documentation

bool ShaderProgram::activate ( PrimitiveType  primitiveType,
unsigned int  primitiveCount 
)

Activate.

Activate program by modyfying OpenGL context. Also prepare underlying classes for use.

Parameters:
primitiveTypePrimitive type that will be rendered.
primitiveCountNumber of primitives that will be rendered.
Returns:
True if program was activated successfully.

Add shader object.

Add new shader object to shader program. If shader object is already part of shader program, function returns silently.

Parameters:
shaderObjPtrPointer to shader object.
static Ptr ShaderProgram::create ( ) [static]

Create shader program.

Returns:
Shader program.

Deactivate.

Return OpenGL context states modified by this class to their default state.

unsigned int ShaderProgram::getGlID ( ) const

Get OpenGL shader program identifier.

Returns:
Numeric identifier of shader program in OpenGL.

Get shader input.

Return pointer to shader input associated with this shader program.

Returns:
Pointer to shader input.

Get program link status.

Returns:
Link status.

Get shader output.

Return pointer to shader output associated with this shader program.

Returns:
Pointer to shader output.
virtual bool ShaderProgram::handleSignal ( unsigned int  signalID,
const ObjectBase callerPtr 
) [virtual]

Handle incoming signal.

Parameters:
signalIDSignal identifier.
callerPtrPointer to object sending signal.
Returns:
True if handled.

Implements SignalReceiver.

Is active?

Return if program is active.

Returns:
True if active.

Remove shader object.

Remove new shader object to shader program. If shader object isn't part of shader program, function returns silently.

Parameters:
shaderObjPtrPointer to shader object.

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