在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 被销毁。
我的 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 被销毁。