我需要不使用for循环一个接一个地制作几个模型。我首先用glm::mat4 model(1)
定义一个,对其进行一些平移和旋转,然后我想删除其所有变换。但是,使其等于NULL无效。我可以调用glm中的某些功能吗?
另外,有人可以解释为什么在声明glm矩阵变量时为什么需要添加“(1)”。没有它是行不通的。声明glm矩阵数组glm::mat4 models[]
时是否还需要添加一些内容?因为数组似乎没有存储变量。
答案 0 :(得分:1)
glm::mat4
的默认构造函数不会初始化矩阵,而是使矩阵的字段保持未初始化状态。
glm API documentation是指The OpenGL Shading Language specification 4.20。
5.4.2向量和矩阵构造器
如果向量构造函数只有一个标量参数,它将用于将构造的向量的所有分量初始化为该标量的值。 如果矩阵构造函数只有一个标量参数,则它将用于初始化矩阵对角线上的所有分量,并将其余分量初始化为0.0。
这意味着,要通过Identity matrix初始化矩阵,必须使用具有单个标量的构造函数:
glm::mat4 model(1.0f);
当然可以将Identity matrix分配给现有矩阵:
model = glm::mat4(1.0f);
动态数组,例如std::vector
可以轻松生成100个身份矩阵:
std::vector<glm::mat4> models(100, glm::mat4(1.0f));