2016-05-11 5 views
0

を反映している私は、画面上の2つのキューブを描いていたと私は透視行列に角度を変えたときに、私のオブジェクトは本当に奇妙な振る舞い、ここに私のコード:: GLMの角度を変更する視点は、オブジェクト

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 

glUseProgram(programID); 
GLuint mvp = glGetUniformLocation(programID, "MVP"); 
glm::mat4 Projection = glm::perspective(45.0f, 4.0f/3.0f, 0.1f, 10.0f); 
glm::mat4 translate = glm::translate(glm::mat4(1.0f), vec3(-2.0f, 0.0f, -5.0f)); 
glm::mat4 rotate = glm::rotate(glm::mat4(1.0f), 54.0f, vec3(-1.0f, 0.0f, 0.0f)); 

glm::mat4 MVP = Projection * translate * rotate; 

glUniformMatrix4fv(mvp, 1, GL_FALSE, &MVP[0][0]); 

glDrawElements(GL_TRIANGLES, numOfIndices, GL_UNSIGNED_SHORT, nullptr); 


translate = glm::translate(glm::mat4(1.0f), vec3(3.0f, 0.0f, -6.0f)); 
rotate = glm::rotate(glm::mat4(1.0f), 54.0f, vec3(0.0f, 1.0f, 0.0f)); 

MVP = Projection * translate * rotate; 

glUniformMatrix4fv(mvp, 1, GL_FALSE, &MVP[0][0]); 

glDrawElements(GL_TRIANGLES, numOfIndices, GL_UNSIGNED_SHORT, nullptr); 
があることに気づきました

2つのキューブは同じ投影行列を共有しますが、平行移動と回転行列が異なります。ここに私のシェーダがあります

シェーダは、位置頂点によってMVPマトリックスをちょうど倍します。私は透視行列の学位のために45.0fでコードを実行したとき、私はこれだ: enter image description here

、その後、私は私が得た55.0fでそれを実行したときに、この:私はオブジェクトの後ろに得たよう enter image description here

に思えますそこからそれらを見て、50.0fを終えるとそれは閉じて、私は立方体の1つのコーナーしか見ることができません。

答えて

1

私は、GLMをそれを考え出しオーケー::視点は、あなたが履く `GLMを書かれている私が書いてきたはずですので、それは最初の引数だとして45.0f *(3.14f/180.0f)ラジアンを取るだけではなく、45.0f

+0

::ラジアン(45.0f) '... – derhass

+0

ありがとうございました。 – demalegabi

関連する問題