//----------------------------------------------------------------------------- GpuProgramParametersSharedPtr GpuProgram::createParameters(void) { // Default implementation simply returns standard parameters. GpuProgramParametersSharedPtr ret = GpuProgramManager::getSingleton().createParameters(); // optionally load manually supplied named constants if (!mManualNamedConstantsFile.empty() && !mLoadedManualNamedConstants) { try { GpuNamedConstants namedConstants; DataStreamPtr stream = ResourceGroupManager::getSingleton().openResource( mManualNamedConstantsFile, mGroup, true, this); namedConstants.load(stream); setManualNamedConstants(namedConstants); } catch(const Exception& e) { LogManager::getSingleton().stream() << "Unable to load manual named constants for GpuProgram " << mName << ": " << e.getDescription(); } mLoadedManualNamedConstants = true; } // set up named parameters, if any if (!mConstantDefs.isNull() && !mConstantDefs->map.empty()) { ret->_setNamedConstants(mConstantDefs); } // link shared logical / physical map for low-level use ret->_setLogicalIndexes(mFloatLogicalToPhysical, mDoubleLogicalToPhysical, mIntLogicalToPhysical, mUIntLogicalToPhysical, mBoolLogicalToPhysical); // Copy in default parameters if present if (!mDefaultParams.isNull()) ret->copyConstantsFrom(*(mDefaultParams.get())); return ret; }
//--------------------------------------------------------------------------- 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; }