glm math - Convierte glm:: vec4 a glm:: vec3
glm ubuntu (2)
Solo usa el constructor vec3. Aquí, en la rama 0.9.5:
glm::vec4 v4(1, 2, 3, 4);
glm::vec3 v(v4);
printf("%s/n", glm::to_string(v).c_str());
y da esta salida
fvec3 (1.000000, 2.000000, 3.000000)
¿Cómo convierto un glm::vec4
a un glm::vec3
?
Solo se requiere x
, y
, z
el componente w
se puede eliminar.
En GLSL esto se puede hacer con .xyz
[1], pero en glm esto produce un error de compilación:
error: ''glm::vec4'' has no member named ''xyz''
[1] http://en.wikibooks.org/wiki/GLSL_Programming/Vector_and_Matrix_Operations#Components
Swizzling no está habilitado de forma predeterminada en glm, ya que utiliza macros que pueden causar conflictos de nombres. Para habilitarlo:
#define GLM_SWIZZLE
#include <glm/glm.hpp>
En glm, swizzling se realiza mediante funciones:
vec3 v3 = v4.xyz();