diff --git a/source/Irrlicht/COGLES2Driver.cpp b/source/Irrlicht/COGLES2Driver.cpp index cbe951cf..fa66ce3b 100644 --- a/source/Irrlicht/COGLES2Driver.cpp +++ b/source/Irrlicht/COGLES2Driver.cpp @@ -2375,7 +2375,10 @@ COGLES2Driver::~COGLES2Driver() r->drop(); if (callback && nr >= 0) + { + r->startUseProgram(); callback->OnCreate(r, userData); + } return nr; } diff --git a/source/Irrlicht/COGLES2MaterialRenderer.cpp b/source/Irrlicht/COGLES2MaterialRenderer.cpp index 628df02c..cfa10321 100644 --- a/source/Irrlicht/COGLES2MaterialRenderer.cpp +++ b/source/Irrlicht/COGLES2MaterialRenderer.cpp @@ -348,6 +348,11 @@ void COGLES2MaterialRenderer::setBasicRenderStates(const SMaterial& material, Driver->setBasicRenderStates(material, lastMaterial, resetAllRenderstates); } +void COGLES2MaterialRenderer::startUseProgram() +{ + Driver->getCacheHandler()->setProgram(Program); +} + s32 COGLES2MaterialRenderer::getVertexShaderConstantID(const c8* name) { return getPixelShaderConstantID(name); diff --git a/source/Irrlicht/COGLES2MaterialRenderer.h b/source/Irrlicht/COGLES2MaterialRenderer.h index 490b43b3..b85ad4b2 100644 --- a/source/Irrlicht/COGLES2MaterialRenderer.h +++ b/source/Irrlicht/COGLES2MaterialRenderer.h @@ -55,6 +55,8 @@ public: virtual void setBasicRenderStates(const SMaterial& material, const SMaterial& lastMaterial, bool resetAllRenderstates) IRR_OVERRIDE; + virtual void startUseProgram() IRR_OVERRIDE; + virtual s32 getVertexShaderConstantID(const c8* name) IRR_OVERRIDE; virtual s32 getPixelShaderConstantID(const c8* name) IRR_OVERRIDE; virtual void setVertexShaderConstant(const f32* data, s32 startRegister, s32 constantAmount=1) IRR_OVERRIDE;