在glm中重用矩阵?

Reuse matrix in glm?

我的 class 中有一个 glm::mat4 字段代表模型转换矩阵,我想在每一帧更新转换。但是,我想在每次更新转换时重用该字段中的矩阵,而不是将其设置为 glm::mat4(),我想这会浪费越来越多的内存,因为存储在那里的矩阵被分配了.我在想象这次泄漏吗?有没有办法让我在 glm 中 "re-identity" 一个矩阵?

没有泄漏,你每帧所做的与int i = 1每帧相似;

// Im assuming somewhere in your class you have this:
class Example{
    public:
        ...
        void Update();
        void Draw();
    private:
        glm::mat4 m_Model;
};

void Example::Update()
{
    // This will rotate the model 1 degree every time update is called
    m_Model = glm::rotate(m_Model, 1.0f, glm::vec3(1, 0, 0);
}

void Example::Draw()
{
    glUniformMatrix4fv(1, GL_FALSE, GL_FALSE, glm::value_ptr(m_Model));
    // Draw model etc.. 
};

重点是,如果您只是将其保持在静态位置(它始终位于 x、y、z 位置),则不必每帧都将 m_Model 设置为 glm::mat4 ),这相当于每次更新都设置 int i = 1,这是毫无意义的,因为它存储在您的 classes 内存中,并保留最后设置的值,直到 class 被销毁。