gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 07:33:15 30 4
gpt4 key购买 nike

我正在使用 glm::lookAt 获取一个矩阵来改变世界。这工作正常,我可以生成矩阵,将其输入着色器,一切正常。我现在需要做的是通过 lookAt 矩阵转换任意 vector (即 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 的输出,无论我的是什么 vector 是

最佳答案

奇怪的是,在使用 glm::value_ptr() 重写了大量代码后,它现在可以工作了

关于c++ - glm lookAt 和矩阵变换产生奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17242214/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com