Add IShaderConstantSetCallBack::OnCreate to allow earlier access to IMaterialRendererServices

Accessing IMaterialRendererServices outside of OnSetConstants can be useful and Irrlicht made this a bit too hard to access.
Also OnCreate allows actually for nicer code where initialization and update of shader constants are strictly separated (see changed example).

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6465 dfc29bdd-3216-0410-991c-e03cc46cb475
This commit is contained in:
cutealien
2023-04-21 14:41:01 +00:00
parent 02165eccc8
commit 16c960c5ed
7 changed files with 41 additions and 14 deletions

View File

@ -3176,6 +3176,10 @@ s32 CD3D9Driver::addShaderMaterial(const c8* vertexShaderProgram,
callback, getMaterialRenderer(baseMaterial), userData);
r->drop();
if (callback && nr >= 0)
callback->OnCreate(this, userData);
return nr;
}
@ -3213,6 +3217,9 @@ s32 CD3D9Driver::addHighLevelShaderMaterial(
r->drop();
if (callback && nr >= 0)
callback->OnCreate(r, userData);
return nr;
}

View File

@ -3725,6 +3725,10 @@ s32 COpenGLDriver::addShaderMaterial(const c8* vertexShaderProgram,
callback, baseMaterial, userData);
r->drop();
if (callback && nr >= 0)
callback->OnCreate(this, userData);
return nr;
}
@ -3759,6 +3763,9 @@ s32 COpenGLDriver::addHighLevelShaderMaterial(
r->drop();
if (callback && nr >= 0)
callback->OnCreate(r, userData);
return nr;
}

View File

@ -4654,6 +4654,9 @@ s32 CBurningVideoDriver::addShaderMaterial(const c8* vertexShaderProgram,
shader->drop();
if (callback && materialID >= 0)
callback->OnCreate(shader, userData);
return materialID;
}
@ -4691,6 +4694,9 @@ s32 CBurningVideoDriver::addHighLevelShaderMaterial(
shader->drop();
if (callback && materialID >= 0)
callback->OnCreate(shader, userData);
return materialID;
}