0
我正在使用glm::lookAt
来获得一个矩阵来转换世界。这工作正常,我可以生成矩阵,将其送入着色器,并且它可以工作。我现在需要做的是通过lookAt
矩阵转换任意向量(即100,100,100,1)。出于某种原因,我得到的垃圾值glm lookAt和产生奇数行为的矩阵变换
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
输出不管是什么我的载体
什么是你的载体,具体是什么,你会得到什么结果? – nplatis
为什么复制矩阵? 'model'已经是'float [16]'数组, – Grimmy
矢量特别是100,100,100,1。不同的值不会改变结果。结果的值随程序的每次调用而改变,如未初始化的变量。复制完成后,我可以将矩阵作为统一数据传递,这要求它是一个浮点数组 – Outurnate