Axiom.Graphics.GpuProgramParameters.CopyConstantsFrom C# (CSharp) Method

CopyConstantsFrom() public method

Copies the values of all constants (including auto constants) from another GpuProgramParameters object.
public CopyConstantsFrom ( GpuProgramParameters source ) : void
source GpuProgramParameters Set of params to use as the source.
return void
		public void CopyConstantsFrom( GpuProgramParameters source )
		{
			int i = 0;

			FloatConstantEntry[] floatEntries = new FloatConstantEntry[ source.floatConstants.Count ];
			IntConstantEntry[] intEntries = new IntConstantEntry[ source.intConstants.Count ];

			// copy those float and int constants right on in
			source.floatConstants.CopyTo( floatEntries );
			source.intConstants.CopyTo( intEntries );

			floatConstants.AddRange( floatEntries );
			intConstants.AddRange( intEntries );

			// Iterate over auto parameters
			// Clear existing auto constants
			ClearAutoConstantType();

			for ( i = 0; i < source.autoConstantList.Count; i++ )
			{
				AutoConstantEntry entry = (AutoConstantEntry)source.autoConstantList[ i ];
				SetAutoConstant( entry.Clone() );
			}

			// don't forget to copy the named param lookup as well
			namedParams = new AxiomCollection<int>( source.namedParams );
		}

Usage Example

        /// <summary>
        ///    Creates a new parameters object compatible with this program definition.
        /// </summary>
        /// <remarks>
        ///    Unlike low-level assembly programs, parameters objects are specific to the
        ///    program and therefore must be created from it rather than by the
        ///    HighLevelGpuProgramManager. This method creates a new instance of a parameters
        ///    object containing the definition of the parameters this program understands.
        /// </remarks>
        /// <returns>A new set of program parameters.</returns>
        public override GpuProgramParameters CreateParameters()
        {
            // create and load named parameters
            GpuProgramParameters newParams = GpuProgramManager.Instance.CreateParameters();

            // Only populate named parameters if we can support this program
            if (IsSupported)
            {
                LoadHighLevel();

                // Errors during load may have prevented compile
                if (IsSupported)
                {
                    PopulateParameterNames(newParams);
                }
            }

            // copy in default parameters if present
            if (defaultParams != null)
            {
                newParams.CopyConstantsFrom(defaultParams);
            }

            return(newParams);
        }
All Usage Examples Of Axiom.Graphics.GpuProgramParameters::CopyConstantsFrom