Author: alanmc
Date: 2006-12-19 11:35:43 -0500 (Tue, 19 Dec 2006)
New Revision: 69756
Modified:
trunk/Mono.Xna/src/Microsoft.Xna.Framework/Matrix.cs
Log:
Optimised Matrix adding. Now when using Matrix.Add(ref, ref, out) there are no
allocations. Previously there were several.
Modified: trunk/Mono.Xna/src/Microsoft.Xna.Framework/Matrix.cs
===================================================================
--- trunk/Mono.Xna/src/Microsoft.Xna.Framework/Matrix.cs 2006-12-19
16:34:32 UTC (rev 69755)
+++ trunk/Mono.Xna/src/Microsoft.Xna.Framework/Matrix.cs 2006-12-19
16:35:43 UTC (rev 69756)
@@ -115,23 +115,10 @@
/// <returns>Resulting matrix.</returns>
public static Matrix Add(Matrix matrix1, Matrix matrix2)
{
- matrix1.M11 += matrix2.M11;
- matrix1.M12 += matrix2.M12;
- matrix1.M13 += matrix2.M13;
- matrix1.M14 += matrix2.M14;
- matrix1.M21 += matrix2.M21;
- matrix1.M22 += matrix2.M22;
- matrix1.M23 += matrix2.M23;
- matrix1.M24 += matrix2.M24;
- matrix1.M31 += matrix2.M31;
- matrix1.M32 += matrix2.M32;
- matrix1.M33 += matrix2.M33;
- matrix1.M34 += matrix2.M34;
- matrix1.M41 += matrix2.M41;
- matrix1.M42 += matrix2.M42;
- matrix1.M43 += matrix2.M43;
- matrix1.M44 += matrix2.M44;
- return matrix1;
+ Matrix result;
+ Matrix.Add(ref matrix1, ref matrix2, out result);
+ return result;
+
}
/// <summary>Adds a matrix to another matrix.</summary>
@@ -140,8 +127,22 @@
/// <param name="result">Resulting matrix.</param>
public static void Add(ref Matrix matrix1, ref Matrix matrix2, out
Matrix result)
{
-#warning Isn't the point behind using REF to not make new copies of the matrix?
- result = Add(matrix1, matrix2);
+ result.M11 = matrix1.M11 + matrix2.M11;
+ result.M12 = matrix1.M12 + matrix2.M12;
+ result.M13 = matrix1.M13 + matrix2.M13;
+ result.M14 = matrix1.M14 + matrix2.M14;
+ result.M21 = matrix1.M21 + matrix2.M21;
+ result.M22 = matrix1.M22 + matrix2.M22;
+ result.M23 = matrix1.M23 + matrix2.M23;
+ result.M24 = matrix1.M24 + matrix2.M24;
+ result.M31 = matrix1.M31 + matrix2.M31;
+ result.M32 = matrix1.M32 + matrix2.M32;
+ result.M33 = matrix1.M33 + matrix2.M33;
+ result.M34 = matrix1.M34 + matrix2.M34;
+ result.M41 = matrix1.M41 + matrix2.M41;
+ result.M42 = matrix1.M42 + matrix2.M42;
+ result.M43 = matrix1.M43 + matrix2.M43;
+ result.M44 = matrix1.M44 + matrix2.M44;
}
/// <summary>Created a billboard</summary>
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches