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