glm lookAt和矩阵变换产生奇怪的行为

时间:2013-06-21 18:40:41

标签: c++ opengl matrix transformation

我正在使用glm::lookAt获取矩阵来改变世界。这工作正常,我可以生成矩阵,将其提供到着色器,这一切都有效。我现在需要做的是通过lookAt矩阵变换任意向量(即100,100,100,1)。出于某种原因,我得到了垃圾值

glm::mat4 model = glm::lookAt(glm::vec3(current_pos.x,
                                        current_pos.y, 
                                        current_pos.z),
                              glm::vec3(current_pos.x + dir.x,
                                        current_pos.y + dir.y, 
                                        current_pos.z + dir.z),
                              glm::vec3(up.x,up.y,up.z));
GLfloat fmodel[16] =
{
    model[0][0],
    model[0][1],
    model[0][2],
    model[0][3],

    model[1][0],
    model[1][1],
    model[1][2],
    model[1][3],

    model[2][0],
    model[2][1],
    model[2][2],
    model[2][3],

    model[3][0],
    model[3][1],
    model[3][2],
    model[3][3]
};

打印出model的值:0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3 我正在使用model * vec4(x, y, z, 1)

计算点数

矩阵是重复的,所以我可以将它作为制服传递。两者都使用原始矩阵从阵列构造矩阵产生相同的结果。

修改

打印代码如下:

for (unsigned i = 0; i < 16; ++i)
  printf("%d,", fmodel[i]);

无论我的载体是什么

,都会产生3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0的输出

1 个答案:

答案 0 :(得分:1)

奇怪的是,在使用glm::value_ptr()重写大量代码后,现在正在使用