我的一个类中有一个glm::mat4
字段代表模型转换矩阵,我想每帧都更新转换。但是,我想在每次更新转换时重复使用此字段中的矩阵,而不是将其设置为glm::mat4()
,我认为这会浪费越来越多的内存,因为存储在那里的矩阵已分配到。我想象这个漏洞吗?有没有办法让我在glm中“重新识别”矩阵?
答案 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_Model
到glm::mat4
x,y,z位置),相当于每次更新设置int i = 1
,它没有意义,因为它存储在类内存中并保留最后一个值,直到类被销毁。