如何从glm::mat4中读取值

11

我有一个glm::mat4矩阵,需要将其值存储在double[16]数组中。 有什么好的解决方法?

2个回答

28
glm::mat4 pMat4;  // your matrix

double dArray[16] = {0.0};

const float *pSource = (const float*)glm::value_ptr(pMat4);
for (int i = 0; i < 16; ++i)
    dArray[i] = pSource[i];

谢谢!完美解决了! :) - Edvin
1
直接使用pSource是否不安全? - cangrejo
12
请记得包含 "#include <glm/gtc/type_ptr.hpp>"。 - goe
有没有安全的方法把这个过程反过来(将float[16]转换成mat4)? - winduptoy
1
@MattReyer 我相信你可以使用 glm::make_mat4x4()。查看这个链接 - Samuel Li

0

&mat[0][0] 也可以工作。来自 glm 文档 中的 OpenGL 互操作性 部分:

glm::vec4 v(0.0f);
glm::mat4 m(1.0f);
...
glUniform3fv(uniVec, 1, glm::value_ptr(&v[0]));
glUniformMatrix4fv(uniMat, 1, GL_FALSE, &m[0][0]);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接