コード例 #1
0
        /// <summary>
        /// Sets the effect parameter which the uniform uses as its data source.
        /// </summary>
        /// <param name="source">The effect parameter which the uniform will use as its data source.</param>
        public void SetDataSource(OpenGLEffectParameterData source)
        {
            Contract.Require(source, nameof(source));

            this.source = source;
        }
コード例 #2
0
        /// <summary>
        /// Sets the effect parameter which the uniform uses as its data source.
        /// </summary>
        /// <param name="source">The effect parameter which the uniform will use as its data source.</param>
        public void SetDataSource(OpenGLEffectParameterData source)
        {
            Contract.Require(source, nameof(source));

            this.source = source;
        }
コード例 #3
0
        /// <summary>
        /// Gets a value indicating whether this instance contains the same data as the specified instance.
        /// </summary>
        /// <param name="other">The instance to compare to this instance.</param>
        /// <returns><see langword="true"/> if both instances contain the same data; otherwise, <see langword="false"/>.</returns>
        public Boolean ContainsSameData(OpenGLEffectParameterData other)
        {
            Contract.Require(other, nameof(other));

            if (other.DataType != this.DataType)
            {
                return(false);
            }

            switch (DataType)
            {
            case OpenGLEffectParameterDataType.None:
                return(true);

            case OpenGLEffectParameterDataType.Boolean:
                return(this.valData[0] == other.valData[0]);

            case OpenGLEffectParameterDataType.Int32:
            case OpenGLEffectParameterDataType.UInt32:
            case OpenGLEffectParameterDataType.Single:
            case OpenGLEffectParameterDataType.Color:
                return
                    (this.valData[0] == other.valData[0] &&
                     this.valData[1] == other.valData[1] &&
                     this.valData[2] == other.valData[2] &&
                     this.valData[3] == other.valData[3]);

            case OpenGLEffectParameterDataType.Double:
            case OpenGLEffectParameterDataType.Vector2:
                for (int i = 0; i < sizeof(Vector2); i++)
                {
                    if (this.valData[i] != other.valData[i])
                    {
                        return(false);
                    }
                }
                return(true);

            case OpenGLEffectParameterDataType.Vector3:
                for (int i = 0; i < sizeof(Vector3); i++)
                {
                    if (this.valData[i] != other.valData[i])
                    {
                        return(false);
                    }
                }
                return(true);

            case OpenGLEffectParameterDataType.Vector4:
                for (int i = 0; i < sizeof(Vector4); i++)
                {
                    if (this.valData[i] != other.valData[i])
                    {
                        return(false);
                    }
                }
                return(true);

            case OpenGLEffectParameterDataType.Matrix:
                for (int i = 0; i < sizeof(Matrix); i++)
                {
                    if (this.valData[i] != other.valData[i])
                    {
                        return(false);
                    }
                }
                return(true);

            case OpenGLEffectParameterDataType.Int32Array:
            case OpenGLEffectParameterDataType.UInt32Array:
            case OpenGLEffectParameterDataType.SingleArray:
            case OpenGLEffectParameterDataType.DoubleArray:
            case OpenGLEffectParameterDataType.Vector2Array:
            case OpenGLEffectParameterDataType.Vector3Array:
            case OpenGLEffectParameterDataType.Vector4Array:
            case OpenGLEffectParameterDataType.ColorArray:
            case OpenGLEffectParameterDataType.MatrixArray:
            case OpenGLEffectParameterDataType.Texture2D:
                return(this.refData == other.refData);

            default:
                throw new NotImplementedException();
            }
        }