Browse Source

Add simdMat4 static constants

- Tests, too
Jesse Talavera-Greenberg 10 years ago
parent
commit
57e6ea071d
3 changed files with 21 additions and 1 deletions
  1. 5 0
      glm/gtx/simd_mat4.hpp
  2. 5 0
      glm/gtx/simd_mat4.inl
  3. 11 1
      test/gtx/gtx_simd_mat4.cpp

+ 5 - 0
glm/gtx/simd_mat4.hpp

@@ -83,6 +83,11 @@ namespace detail
 			static GLM_RELAXED_CONSTEXPR precision prec = defaultp;
 #		endif//GLM_META_PROG_HELPERS
 
+#		ifdef GLM_STATIC_CONST_MEMBERS
+			static const type ZERO;
+			static const type IDENTITY;
+#		endif
+
 		GLM_FUNC_DECL length_t length() const;
 
 		fvec4SIMD Data[4];

+ 5 - 0
glm/gtx/simd_mat4.inl

@@ -61,6 +61,11 @@ GLM_FUNC_QUALIFIER fvec4SIMD const & fmat4x4SIMD::operator[]
 	return this->Data[i];
 }
 
+#ifdef GLM_STATIC_CONST_MEMBERS
+	const fmat4x4SIMD fmat4x4SIMD::ZERO(0);
+	const fmat4x4SIMD fmat4x4SIMD::IDENTITY(1);
+#endif
+
 //////////////////////////////////////////////////////////////
 // Constructors
 

+ 11 - 1
test/gtx/gtx_simd_mat4.cpp

@@ -29,6 +29,7 @@
 /// @author Christophe Riccio
 ///////////////////////////////////////////////////////////////////////////////////
 
+#define GLM_STATIC_CONST_MEMBERS
 #include <glm/glm.hpp>
 #include <glm/gtc/matrix_transform.hpp>
 #include <glm/gtc/quaternion.hpp>
@@ -252,6 +253,15 @@ int test_compute_gtx()
 	return 0;
 }
 
+int test_static_const() {
+	int Error(0);
+
+	Error += glm::simdMat4(1) == glm::simdMat4::IDENTITY ? 0 : 1;
+	Error += glm::simdMat4(0) == glm::simdMat4::ZERO ? 0 : 1;
+
+	return Error;
+}
+
 int main()
 {
 	int Error = 0;
@@ -313,7 +323,7 @@ int main()
 
 	Error += test_compute_glm();
 	Error += test_compute_gtx();
-	
+	Error += test_static_const();
 	float Det = glm::determinant(glm::simdMat4(1.0));
 	Error += Det == 1.0f ? 0 : 1;