Esempio n. 1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="EffectParameter"/> class.
        /// </summary>
        internal EffectParameter(EffectData.ValueTypeParameter parameterDescription, EffectConstantBuffer buffer)
            : base(parameterDescription.Name)
        {
            this.ParameterDescription = parameterDescription;
            this.buffer = buffer;

            ResourceType   = EffectResourceType.None;
            IsValueType    = true;
            ParameterClass = parameterDescription.Class;
            ParameterType  = parameterDescription.Type;
            RowCount       = parameterDescription.RowCount;
            ColumnCount    = parameterDescription.ColumnCount;
            ElementCount   = parameterDescription.Count;
            Offset         = parameterDescription.Offset;
            Size           = parameterDescription.Size;

            // If the expecting Matrix is column_major or the expected size is != from Matrix, than we need to remap SharpDX.Matrix to it.
            if (ParameterClass == EffectParameterClass.MatrixRows || ParameterClass == EffectParameterClass.MatrixColumns)
            {
                var isMatrixToMap = RowCount != 4 || ColumnCount != 4 || ParameterClass == EffectParameterClass.MatrixColumns;
                matrixSize = (ParameterClass == EffectParameterClass.MatrixColumns ? ColumnCount : RowCount) * 4 * sizeof(float);
                // Use the correct function for this parameter
                CopyMatrix    = isMatrixToMap ? (ParameterClass == EffectParameterClass.MatrixRows) ? new CopyMatrixDelegate(CopyMatrixRowMajor) : CopyMatrixColumnMajor : CopyMatrixDirect;
                GetMatrixImpl = isMatrixToMap ? (ParameterClass == EffectParameterClass.MatrixRows) ? new GetMatrixDelegate(GetMatrixRowMajorFrom) : GetMatrixColumnMajorFrom : GetMatrixDirectFrom;
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="EffectParameter"/> class.
        /// </summary>
        internal EffectParameter(EffectData.ResourceParameter parameterDescription, EffectResourceType resourceType, int offset, EffectResourceLinker resourceLinker)
            : base(parameterDescription.Name)
        {
            this.ParameterDescription = parameterDescription;
            this.resourceLinker       = resourceLinker;

            ResourceType   = resourceType;
            IsValueType    = false;
            ParameterClass = parameterDescription.Class;
            ParameterType  = parameterDescription.Type;
            RowCount       = ColumnCount = 0;
            ElementCount   = parameterDescription.Count;
            Offset         = offset;
        }