Browse Source

Fixed GTC_round build

Christophe 6 years ago
parent
commit
cb9cd7ccb8
1 changed files with 54 additions and 1 deletions
  1. 54 1
      glm/gtc/round.inl

+ 54 - 1
glm/gtc/round.inl

@@ -3,8 +3,61 @@
 #include "../integer.hpp"
 #include "../ext/vector_integer.hpp"
 
-namespace glm
+namespace glm{
+namespace detail
 {
+	template<bool is_float, bool is_signed>
+	struct compute_roundMultiple {};
+
+	template<>
+	struct compute_roundMultiple<true, true>
+	{
+		template<typename genType>
+		GLM_FUNC_QUALIFIER static genType call(genType Source, genType Multiple)
+		{
+			if (Source >= genType(0))
+				return Source - std::fmod(Source, Multiple);
+			else
+			{
+				genType Tmp = Source + genType(1);
+				return Tmp - std::fmod(Tmp, Multiple) - Multiple;
+			}
+		}
+	};
+
+	template<>
+	struct compute_roundMultiple<false, false>
+	{
+		template<typename genType>
+		GLM_FUNC_QUALIFIER static genType call(genType Source, genType Multiple)
+		{
+			if (Source >= genType(0))
+				return Source - Source % Multiple;
+			else
+			{
+				genType Tmp = Source + genType(1);
+				return Tmp - Tmp % Multiple - Multiple;
+			}
+		}
+	};
+
+	template<>
+	struct compute_roundMultiple<false, true>
+	{
+		template<typename genType>
+		GLM_FUNC_QUALIFIER static genType call(genType Source, genType Multiple)
+		{
+			if (Source >= genType(0))
+				return Source - Source % Multiple;
+			else
+			{
+				genType Tmp = Source + genType(1);
+				return Tmp - Tmp % Multiple - Multiple;
+			}
+		}
+	};
+}//namespace detail
+
 	//////////////////
 	// ceilPowerOfTwo