2013-06-21 62 views
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輸出不管是什麼我的載體

+0

什麼是你的載體,具體是什麼,你會得到什麼結果? – nplatis

+0

爲什麼複製矩陣? 'model'已經是'float [16]'數組, – Grimmy

+0

矢量特別是100,100,100,1。不同的值不會改變結果。結果的值隨程序的每次調用而改變,如未初始化的變量。複製完成後,我可以將矩陣作爲統一數據傳遞,這要求它是一個浮點數組 – Outurnate

回答

0

奇怪的是,使用glm::value_ptr()重寫代碼大片後,這現在正在工作