Например так:
class SHCallback : public ocge::IShaderCallback
{
ocge::Oint mycolor;
ocge::Oint MVP;
glm::mat4 VP;
public:
void onCreate(ocge::IShader* shader)
{
mycolor = shader->getUniformHandle("mycolor");
MVP = shader->getUniformHandle("MVP");
}
void onEntityRender(ocge::IShader* shader, ocge::IEntity* entity)
{
glm::mat4 mvp = VP * entity->getModelMatrix(true);
shader->setUniformMat4fv(MVP, 1, glm::value_ptr(mvp));
if(entity->getName() == "cube")
shader->setUniform4f(mycolor,0,1,0,1);
else
shader->setUniform4f(mycolor,1,0,0,1);
}
void onSceneRender(ocge::IShader* shader, ocge::ISceneManager* smgr)
{
VP = engine->getProjectionMatrix() * smgr->getCamera()->getViewMatrix();
}
};