2013-01-03 61 views
0

編輯: 好吧現在得到它:D 問題:完全忘記的glm使用colum-major矩陣。只需要將GL_TRUE更改爲GL_FALSE,一切都可以。GLSL 330矩陣計算錯誤{沒有編譯錯誤}


我試圖計算我ModelMatrix我ProjectionMatrix。像這樣:

#version 330 

layout(location = 0) in vec4 position; 
layout(location = 1) in vec4 color; 


uniform mat4 projectionMatrix; //This are the Matrixes from my cpp-app 
uniform mat4 modelMatrix;  //With a debugger that can show all active uniforms i checked their values: They're right! 

uniform mat4 testUni;   //Here I checked if its working when I precompute the model and perspective matrices in my source: works 
mat4 viewMatrix = mat4(1.0f); 

noperspective out vec4 vertColor; 


mat4 MVP = projectionMatrix * modelMatrix ; //Should actually have the same value like testUni 

void main() 
{ 


gl_Position = testUni * position ; //Well... :) Works 
gl_Position = MVP * position ; //Well... :) Doesn't work [Just the perspective Transforn] 


vertColor = position; 
} 
+0

當你在main()中移動MVP計算會發生什麼?或者讓MVP'const'? – genpfault

+0

const MVP:白色矩形:不起作用 main():與上面相同main()[但沒有const] – BlackCrowned

回答

1

移動的聲明

mat4 MVP = projectionMatrix * modelMatrix ; //Should actually have the same value like testUni 

main()。着色器執行從main開始。如果您想要避免每個頂點的計算,請預先計算外部矩陣並將其作爲統一提供。

+0

編輯主帖^^ 但實際上它的結果是一樣的。 我真的不喜歡這個預計算,在我的情況下,我必須在每次抽獎後再打一個電話.- – BlackCrowned

+1

@ user1946282:預計算是CPU側的一次調用,也可能是數千次冗餘GPU上的計算。如果它只是一個單一的矩陣,CPU將大大超越GPU。 – datenwolf

+0

是的,如果那是我有的唯一的可能性,我會預先計算在CPU上。 但我的主要原因是,我有2個這些矩陣類。我不知道如何將投影矩陣的值放入處理模型矩陣的矩陣中:/ – BlackCrowned