glm-math

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();

Consulte: http://glm.g-truc.net/0.9.2/api/a00002.html