Interface providing some methods for changing advanced, internal states of a IVideoDriver. More...
#include <IMaterialRendererServices.h>
Interface providing some methods for changing advanced, internal states of a IVideoDriver.
Definition at line 20 of file IMaterialRendererServices.h.
virtual irr::video::IMaterialRendererServices::~IMaterialRendererServices | ( | ) | [inline, virtual] |
Destructor.
Definition at line 25 of file IMaterialRendererServices.h.
virtual IVideoDriver* irr::video::IMaterialRendererServices::getVideoDriver | ( | ) | [pure virtual] |
Get pointer to the IVideoDriver interface.
virtual void irr::video::IMaterialRendererServices::setBasicRenderStates | ( | const SMaterial & | material, |
const SMaterial & | lastMaterial, | ||
bool | resetAllRenderstates | ||
) | [pure virtual] |
Can be called by an IMaterialRenderer to make its work easier.
Sets all basic renderstates if needed. Basic render states are diffuse, ambient, specular, and emissive color, specular power, bilinear and trilinear filtering, wireframe mode, grouraudshading, lighting, zbuffer, zwriteenable, backfaceculling and fog enabling.
material | The new material to be used. |
lastMaterial | The material used until now. |
resetAllRenderstates | Set to true if all renderstates should be set, regardless of their current state. |
virtual bool irr::video::IMaterialRendererServices::setPixelShaderConstant | ( | const c8 * | name, |
const f32 * | floats, | ||
int | count | ||
) | [pure virtual] |
Sets a constant for the pixel shader based on a name.
This can be used if you used a high level shader language like GLSL or HLSL to create a shader. See setVertexShaderConstant() for an example on how to use this.
name | Name of the variable |
floats | Pointer to array of floats |
count | Amount of floats in array. |
virtual bool irr::video::IMaterialRendererServices::setPixelShaderConstant | ( | const c8 * | name, |
const bool * | bools, | ||
int | count | ||
) | [pure virtual] |
Bool interface for the above.
virtual bool irr::video::IMaterialRendererServices::setPixelShaderConstant | ( | const c8 * | name, |
const s32 * | ints, | ||
int | count | ||
) | [pure virtual] |
Int interface for the above.
virtual void irr::video::IMaterialRendererServices::setPixelShaderConstant | ( | const f32 * | data, |
s32 | startRegister, | ||
s32 | constantAmount = 1 |
||
) | [pure virtual] |
Sets a pixel shader constant.
Can be used if you created a shader using pixel/vertex shader assembler or ARB_fragment_program or ARB_vertex_program.
data | Data to be set in the constants |
startRegister | First register to be set. |
constantAmount | Amount of registers to be set. One register consists of 4 floats. |
virtual bool irr::video::IMaterialRendererServices::setVertexShaderConstant | ( | const c8 * | name, |
const f32 * | floats, | ||
int | count | ||
) | [pure virtual] |
Sets a constant for the vertex shader based on a name.
This can be used if you used a high level shader language like GLSL or HLSL to create a shader. Example: If you created a shader which has variables named 'mWorldViewProj' (containing the WorldViewProjection matrix) and another one named 'fTime' containing one float, you can set them in your IShaderConstantSetCallBack derived class like this:
virtual void OnSetConstants(video::IMaterialRendererServices* services, s32 userData) { video::IVideoDriver* driver = services->getVideoDriver(); f32 time = (f32)os::Timer::getTime()/100000.0f; services->setVertexShaderConstant("fTime", &time, 1); core::matrix4 worldViewProj(driver->getTransform(video::ETS_PROJECTION)); worldViewProj *= driver->getTransform(video::ETS_VIEW); worldViewProj *= driver->getTransform(video::ETS_WORLD); services->setVertexShaderConstant("mWorldViewProj", worldViewProj.M, 16); }
name | Name of the variable |
floats | Pointer to array of floats |
count | Amount of floats in array. |
virtual bool irr::video::IMaterialRendererServices::setVertexShaderConstant | ( | const c8 * | name, |
const bool * | bools, | ||
int | count | ||
) | [pure virtual] |
Bool interface for the above.
virtual bool irr::video::IMaterialRendererServices::setVertexShaderConstant | ( | const c8 * | name, |
const s32 * | ints, | ||
int | count | ||
) | [pure virtual] |
Int interface for the above.
virtual void irr::video::IMaterialRendererServices::setVertexShaderConstant | ( | const f32 * | data, |
s32 | startRegister, | ||
s32 | constantAmount = 1 |
||
) | [pure virtual] |
Sets a vertex shader constant.
Can be used if you created a shader using pixel/vertex shader assembler or ARB_fragment_program or ARB_vertex_program.
data,: | Data to be set in the constants |
startRegister,: | First register to be set |
constantAmount,: | Amount of registers to be set. One register consists of 4 floats. |