//--------------------------------------------------------------------------- void HighLevelGpuProgram::loadImpl() { if (isSupported()) { // load self loadHighLevel(); // create low-level implementation createLowLevelImpl(); // load constructed assembler program (if it exists) if (!mAssemblerProgram.isNull() && mAssemblerProgram.getPointer() != this) { mAssemblerProgram->load(); } } }
//--------------------------------------------------------------------------- GpuProgramParametersSharedPtr HighLevelGpuProgram::createParameters(void) { // Lock mutex before allowing this since this is a top-level method // called outside of the load() OGRE_LOCK_AUTO_MUTEX; // Make sure param defs are loaded GpuProgramParametersSharedPtr params = GpuProgramManager::getSingleton().createParameters(); // Only populate named parameters if we can support this program if (this->isSupported()) { loadHighLevel(); // Errors during load may have prevented compile if (this->isSupported()) { populateParameterNames(params); } } // Copy in default parameters if present if (!mDefaultParams.isNull()) params->copyConstantsFrom(*(mDefaultParams.get())); return params; }
//----------------------------------------------------------------------- void CgProgram::loadHighLevelSafe() { OGRE_LOCK_AUTO_MUTEX; if (this->isSupported()) loadHighLevel(); }