在glm中重用矩阵?

时间:2017-07-21 04:16:37

标签: c++ matrix glm-math

我的一个类中有一个glm::mat4字段代表模型转换矩阵,我想每帧都更新转换。但是,我想在每次更新转换时重复使用此字段中的矩阵,而不是将其设置为glm::mat4(),我认为这会浪费越来越多的内存,因为存储在那里的矩阵已分配到。我想象这个漏洞吗?有没有办法让我在glm中“重新识别”矩阵?

1 个答案:

答案 0 :(得分:1)

没有泄漏,你每帧的作用与每帧的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.. 
};

关键是,如果您只是将其保持在静止位置(它始终处于静止位置),您不必每帧都设置m_Modelglm::mat4 x,y,z位置),相当于每次更新设置int i = 1,它没有意义,因为它存储在类内存中并保留最后一个值,直到类被销毁。