如何从 glm::mat4 读取值

Posted

技术标签:

【中文标题】如何从 glm::mat4 读取值【英文标题】:How to read the values from a glm::mat4 【发布时间】:2013-09-19 08:47:05 【问题描述】:

我有一个 glm::mat4 矩阵,我需要将这些值放入一个 double[16] 数组中。关于如何解决这个问题的任何想法??

【问题讨论】:

【参考方案1】:
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];

【讨论】:

谢谢!像魅力一样工作! :) 直接使用pSource不安全吗? 记得包含“#include 有没有一种安全的方法可以反过来(将float[16] 变成mat4)? @MattReyer 我相信你可以使用glm::make_mat4x4()。签出this。【参考方案2】:

&amp;mat[0][0] 也可以。来自 glm documentation 中的 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]);

【讨论】:

以上是关于如何从 glm::mat4 读取值的主要内容,如果未能解决你的问题,请参考以下文章

将 glm.mat4 从 Python 传回 C++ (glm::mat4)

glm::mat4 构造函数如何工作?

如何在 glRotatef 中使用 glm::mat4

如何使用 glm::mat4 手动正确编写旋转矩阵?

如何在glRotatef中使用glm :: mat4

如何用数组初始化 glm::mat4?