/// <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; } }
/// <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; }