class MyShaderCallBack : public video::IShaderConstantSetCallBack { public: virtual void OnSetConstants(video::IMaterialRendererServices* services, s32 userData) { video::IVideoDriver* driver = services->getVideoDriver(); // set inverted world matrix // if we are using highlevel shaders (the user can select this when // starting the program), we must set the constants by name. core::matrix4 invWorld = driver->getTransform(video::ETS_WORLD); invWorld.makeInverse(); // set clip matrix core::matrix4 worldViewProj; worldViewProj = driver->getTransform(video::ETS_PROJECTION); worldViewProj *= driver->getTransform(video::ETS_VIEW); worldViewProj *= driver->getTransform(video::ETS_WORLD); //services->setVertexShaderConstant("mInvWorld", invWorld.pointer(), 16); services->setVertexShaderConstant("view_proj_matrix", worldViewProj.pointer(), 16); worldViewProj = driver->getTransform(video::ETS_VIEW); services->setVertexShaderConstant("view_matrix", worldViewProj.pointer(), 16); } };