コード例 #1
0
			public void GenerateConstantDefinitionArrayEntries( String paramName, GpuConstantDefinition baseDef )
			{
				// Copy definition for use with arrays
				var arrayDef = baseDef.Clone();
				arrayDef.ArraySize = 1;

				// Add parameters for array accessors
				// [0] will refer to the same location, [1+] will increment
				// only populate others individually up to 16 array slots so as not to get out of hand,
				// unless the system has been explicitly configured to allow all the parameters to be added

				// paramName[0] version will always exist
				var maxArrayIndex = 1;
				if ( baseDef.ArraySize <= 16 || GenerateAllConstantDefinitionArrayEntries )
				{
					maxArrayIndex = baseDef.ArraySize;
				}

				for ( var i = 0; i < maxArrayIndex; i++ )
				{
					var arrayName = string.Format( "{0}[{1}]", paramName, i );
					this.Map.Add( arrayName.ToLower(), arrayDef );
					// increment location
					arrayDef.PhysicalIndex += arrayDef.ElementSize;
				}
				// note no increment of buffer sizes since this is shared with main array def
			}
コード例 #2
0
            public void GenerateConstantDefinitionArrayEntries(String paramName, GpuConstantDefinition baseDef)
            {
                // Copy definition for use with arrays
                var arrayDef = baseDef.Clone();

                arrayDef.ArraySize = 1;

                // Add parameters for array accessors
                // [0] will refer to the same location, [1+] will increment
                // only populate others individually up to 16 array slots so as not to get out of hand,
                // unless the system has been explicitly configured to allow all the parameters to be added

                // paramName[0] version will always exist
                var maxArrayIndex = 1;

                if (baseDef.ArraySize <= 16 || GenerateAllConstantDefinitionArrayEntries)
                {
                    maxArrayIndex = baseDef.ArraySize;
                }

                for (var i = 0; i < maxArrayIndex; i++)
                {
                    var arrayName = string.Format("{0}[{1}]", paramName, i);
                    this.Map.Add(arrayName.ToLower(), arrayDef);
                    // increment location
                    arrayDef.PhysicalIndex += arrayDef.ElementSize;
                }
                // note no increment of buffer sizes since this is shared with main array def
            }
コード例 #3
0
            public void AddConstantDefinition(string name, GpuConstantType constType, int arrraySize)
            {
                if (this.NamedConstants.Map.ContainsKey(name))
                {
                    throw new Exception(string.Format("Constant entry with name '{0}' allready exists.", name));
                }

                var def = new GpuConstantDefinition
                {
                    ArraySize    = arrraySize,
                    ConstantType = constType,
                    // for compatibility we do not pad values to multiples of 4
                    // when it comes to arrays, user is responsible for creating matching defs
                    ElementSize = GpuConstantDefinition.GetElementSize(constType, false),
                    // not used
                    LogicalIndex = 0,
                    Variability  = GpuParamVariability.Global
                };

                if (def.IsFloat)
                {
                    def.PhysicalIndex = this.FloatConstants.Count;
                    this.FloatConstants.Resize(this.FloatConstants.Count + def.ArraySize * def.ElementSize);
                }
                else
                {
                    def.PhysicalIndex = this.IntConstants.Count;
                    this.IntConstants.Resize(this.IntConstants.Count + def.ArraySize * def.ElementSize);
                }
                this.NamedConstants.Map.Add(name, def);

                ++Version;
            }
コード例 #4
0
 public void generateConstantDefinitionArrayEntries(string paramName, GpuConstantDefinition baseDef)
 {
     OgrePINVOKE.GpuNamedConstants_generateConstantDefinitionArrayEntries(swigCPtr, paramName, GpuConstantDefinition.getCPtr(baseDef));
     if (OgrePINVOKE.SWIGPendingException.Pending)
     {
         throw OgrePINVOKE.SWIGPendingException.Retrieve();
     }
 }
コード例 #5
0
        public GpuConstantDefinition getConstantDefinition(string name)
        {
            GpuConstantDefinition ret = new GpuConstantDefinition(OgrePINVOKE.GpuSharedParameters_getConstantDefinition(swigCPtr, name), false);

            if (OgrePINVOKE.SWIGPendingException.Pending)
            {
                throw OgrePINVOKE.SWIGPendingException.Retrieve();
            }
            return(ret);
        }
コード例 #6
0
            public GpuConstantDefinition Clone()
            {
                var result = new GpuConstantDefinition();

                result.ConstantType  = this.ConstantType;
                result.PhysicalIndex = PhysicalIndex;
                result.LogicalIndex  = this.LogicalIndex;
                result.ElementSize   = this.ElementSize;
                result.ArraySize     = this.ArraySize;
                result.Variability   = this.Variability;
                return(result);
            }
コード例 #7
0
 internal static global::System.Runtime.InteropServices.HandleRef getCPtr(GpuConstantDefinition obj)
 {
     return((obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr);
 }
コード例 #8
0
 public GpuConstantDefinition Clone()
 {
     var result = new GpuConstantDefinition();
     result.ConstantType = ConstantType;
     result.PhysicalIndex = PhysicalIndex;
     result.LogicalIndex = LogicalIndex;
     result.ElementSize = ElementSize;
     result.ArraySize = ArraySize;
     result.Variability = Variability;
     return result;
 }
コード例 #9
0
			public void AddConstantDefinition( string name, GpuConstantType constType, int arrraySize = 1 )
			{
				if ( NamedConstants.Map.ContainsKey( name ) )
				{
					throw new Exception( string.Format("Constant entry with name '{0}' allready exists.", name) );
				}

                var def = new GpuConstantDefinition
                          {
                              ArraySize = arrraySize,
                              ConstantType = constType,

                              // for compatibility we do not pad values to multiples of 4
                              // when it comes to arrays, user is responsible for creating matching defs
                              ElementSize = GpuConstantDefinition.GetElementSize( constType, false ),

                              // not used
                              LogicalIndex = 0,
                              Variability = GpuParamVariability.Global
                          };

				if ( def.IsFloat )
				{
					def.PhysicalIndex = FloatConstants.Count;
                    FloatConstants.Resize(FloatConstants.Count + def.ArraySize * def.ElementSize);
				}
				else
				{
					def.PhysicalIndex = IntConstants.Count;
                    IntConstants.Resize(IntConstants.Count + def.ArraySize * def.ElementSize);
				}
				NamedConstants.Map.Add( name, def );

				++Version;
			}
コード例 #10
0
        /// <summary>
        /// Find a constant definition for a named parameter.
        /// <remarks>
        /// This method returns null if the named parameter did not exist, unlike
        /// <see cref="GetConstantDefinition" /> which is more strict; unless you set the 
        /// last parameter to true.
        /// </remarks>
        /// </summary>
        /// <param name="name">The name to look up</param>
        /// <param name="throwExceptionIfMissing"> If set to true, failure to find an entry
        /// will throw an exception.</param>
        public GpuConstantDefinition FindNamedConstantDefinition(string name, bool throwExceptionIfNotFound)
	    {

            if (namedParams == null)
		    {
                if (throwExceptionIfNotFound)
                    throw new AxiomException( "Named constants have not been initialised, perhaps a compile error." );
			    return null;
		    }

            int value;
            if (!namedParams.TryGetValue( name, out value ))
		    {
			    if (throwExceptionIfNotFound)
			        throw new AxiomException( "Parameter called " + name + " does not exist. " );
			    return null;
		    }
		    //else
	        {
                // temp hack (gotta update this mess)
	            var def = new GpuConstantDefinition();
	            def.LogicalIndex = value;
	            def.PhysicalIndex = value;
	            return def;
	            //return &(i->second);
	        }
	    }