我有一系列职位:
float positions[] = {
-42.5806f, 27.8838f, 49.9729f,
-14.9092f, 26.1262f, 54.3193f,
-28.5149f, 32.7642f, 59.4234f,
-28.4439f, 23.9779f, 55.7947f,
21.8174f, 27.4106f, 54.9496f,
48.8382f, 28.1005f, 50.7636f,
34.1595f, 33.8675f, 58.1264f,
35.4594f, 24.8225f, 56.0585f,
-55.9764f, 36.8791f, 42.2097f,
-9.83348f, 39.9998f, 70.2909f,
};
我想使用三个 glm::mat4 矩阵来转换每个位置;模型、视图和投影。为了转换每个位置,我需要将每一行乘以矩阵:
tPositions = proj * view * model * glm::vec4(position[0], position[1], position[2], 1.0);
请注意,我必须将每个位置转换为 vec4 才能使乘法正确。
我试过的:
float tPositions;
for( unsigned int i=0; i < 9; i++ ){
glm::vec4 v = glm::vec4(positions[0], positions[1], positions[2], 1.0);
tPositions[i] = proj * view * model * v;
}
但这不起作用,因为位置的索引是错误的(而且应该更多)。
我的问题是:
如何在 C++ 中循环遍历数组,对每个位置进行转换,然后在新数组中输出转换后的位置,这是最好的方法?