//--------------------------------------------------------------------- void GpuProgramUsage::loadingComplete(Resource* prog) { // Need to re-create parameters if (mRecreateParams) recreateParameters(); }
//----------------------------------------------------------------------------- void GpuProgramUsage::setProgramName(const String& name, bool resetParams) { if (!mProgram.isNull()) { mProgram->removeListener(this); mRecreateParams = true; } mProgram = GpuProgramManager::getSingleton().getByName(name); if (mProgram.isNull()) { String progType = (mType == GPT_VERTEX_PROGRAM ? "vertex" : (mType == GPT_GEOMETRY_PROGRAM ? "geometry" : "fragment")); OGRE_EXCEPT(Exception::ERR_ITEM_NOT_FOUND, "Unable to locate " + progType + " program called " + name + ".", "GpuProgramUsage::setProgramName"); } // Reset parameters if (resetParams || mParameters.isNull() || mRecreateParams) { recreateParameters(); } // Listen in on reload events so we can regenerate params mProgram->addListener(this); }
//----------------------------------------------------------------------------- void GpuProgramUsage::setProgramName(const String& name, bool resetParams) { if (!mProgram.isNull()) { mProgram->removeListener(this); mRecreateParams = true; } mProgram = GpuProgramManager::getSingleton().getByName(name, mParent->getResourceGroup()); //Look again without the group if not found if (mProgram.isNull()) mProgram = GpuProgramManager::getSingleton().getByName(name); if (mProgram.isNull()) { String progType = "fragment"; if (mType == GPT_VERTEX_PROGRAM) { progType = "vertex"; } else if (mType == GPT_GEOMETRY_PROGRAM) { progType = "geometry"; } else if (mType == GPT_DOMAIN_PROGRAM) { progType = "domain"; } else if (mType == GPT_HULL_PROGRAM) { progType = "hull"; } else if (mType == GPT_COMPUTE_PROGRAM) { progType = "compute"; } OGRE_EXCEPT(Exception::ERR_ITEM_NOT_FOUND, "Unable to locate " + progType + " program called " + name + ".", "GpuProgramUsage::setProgramName"); } // Reset parameters if (resetParams || mParameters.isNull() || mRecreateParams) { recreateParameters(); } // Listen in on reload events so we can regenerate params mProgram->addListener(this); }