diff --git a/glm/gtx/simd_vec4.hpp b/glm/gtx/simd_vec4.hpp index d18fbb8e..3e36cc91 100644 --- a/glm/gtx/simd_vec4.hpp +++ b/glm/gtx/simd_vec4.hpp @@ -54,6 +54,14 @@ # pragma message("GLM: GLM_GTX_simd_vec4 extension included") #endif + +// Warning silencer for nameless struct/union. +#if (GLM_COMPILER & GLM_COMPILER_VC) +# pragma warning(push) +# pragma warning(disable:4201) // warning C4201: nonstandard extension used : nameless struct/union +#endif + + namespace glm{ namespace detail { @@ -69,7 +77,15 @@ namespace detail typedef fvec4SIMD type; typedef tvec4 bool_type; - __m128 Data; +#ifdef GLM_SIMD_ENABLE_XYZW_UNION + union + { + __m128 Data; + struct {float x, y, z, w;}; + }; +#else + __m128 Data; +#endif ////////////////////////////////////// // Implicit basic constructors @@ -490,6 +506,12 @@ namespace detail #include "simd_vec4.inl" + +#if (GLM_COMPILER & GLM_COMPILER_VC) +# pragma warning(pop) +#endif + + #endif//(GLM_ARCH != GLM_ARCH_PURE) #endif//GLM_GTX_simd_vec4