Home | Namespaces | Hierarchy | Alphabetical List | Class list | Files | Namespace Members | Class members | File members

irr::video::IShaderConstantSetCallBack Class Reference

Interface making it possible to set constants for gpu programs every frame. More...

#include <IShaderConstantSetCallBack.h>

Inheritance diagram for irr::video::IShaderConstantSetCallBack:

irr::IReferenceCounted List of all members.

Public Member Functions

virtual void OnSetConstants (IMaterialRendererServices *services, s32 userData)=0
 Called by the engine when the vertex and/or pixel shader constants for an material renderer should be set.
virtual ~IShaderConstantSetCallBack ()
 Destructor.

Detailed Description

Interface making it possible to set constants for gpu programs every frame.

Implement this interface in an own class and pass a pointer to it to one of the methods in IGPUProgrammingServices when creating a shader. The OnSetConstants method will be called every frame now.

Definition at line 20 of file IShaderConstantSetCallBack.h.


Constructor & Destructor Documentation

virtual irr::video::IShaderConstantSetCallBack::~IShaderConstantSetCallBack  )  [inline, virtual]
 

Destructor.

Definition at line 25 of file IShaderConstantSetCallBack.h.


Member Function Documentation

virtual void irr::video::IShaderConstantSetCallBack::OnSetConstants IMaterialRendererServices services,
s32  userData
[pure virtual]
 

Called by the engine when the vertex and/or pixel shader constants for an material renderer should be set.

Implement the IShaderConstantSetCallBack in an own class and implement your own OnSetConstants method using the given IMaterialRendererServices interface. Pass a pointer to this class to one of the methods in IGPUProgrammingServices when creating a shader. The OnSetConstants method will now be called every time before geometry is being drawn using your shader material. A sample implementation would look like this:

        virtual void OnSetConstants(video::IMaterialRendererServices* services, s32 userData)
        {
                video::IVideoDriver* driver = services->getVideoDriver();

                // set clip matrix at register 4
                core::matrix4 worldViewProj(driver->getTransform(video::ETS_PROJECTION));
                worldViewProj *= driver->getTransform(video::ETS_VIEW);
                worldViewProj *= driver->getTransform(video::ETS_WORLD);
                services->setVertexShaderConstant(&worldViewProj.M[0], 4, 4);
                // for high level shading languages, this would be another solution:
                //services->setVertexShaderConstant("mWorldViewProj", worldViewProj.M, 16);

                // set some light color at register 9
                video::SColorf col(0.0f,1.0f,1.0f,0.0f);
                services->setVertexShaderConstant(reinterpret_cast<const f32*>(&col), 9, 1);
                // for high level shading languages, this would be another solution:
                //services->setVertexShaderConstant("myColor", reinterpret_cast<f32*>(&col), 4);
        }
Parameters:
services,: Pointer to an interface providing methods to set the constants for the shader.
userData,: Userdata int which can be specified when creating the shader.


The documentation for this class was generated from the following file:
The Irrlicht Engine
The Irrlicht Engine Documentation © 2003-2008 by Nikolaus Gebhardt. Generated on Sun Sep 21 08:58:02 2008 by Doxygen (1.4.2)