2013-02-15 107 views
0

所以我有點麻煩讓openGL相機做我想做的事情。基本上我希望它根據我的鍵盤輸入移動到某個位置,將場景渲染爲紋理,然後移回到其之前的位置,然後將紋理渲染到四邊形。我想要去的效果是四邊形四處停留的場景。然而,無論我做什麼,四邊形本身總是隨着紋理一起移動。openGL相機問題

我基本上做以下幾點:

SetMatrices; 
gluLookAt(randomposition); 
renderSceneToTexture; 
gluLookAt(originalPosition) 
texturemap my quad/render to screen. 

缺少什麼我在這裏?我的渲染代碼很好,因爲當我不用相機時,一切都能正確渲染。

回答

0

在使用gluLookAt,gluLookAt之前,您需要加載單位矩陣(或您在SetMatrices中設置的一些其他規範矩陣),並將新矩陣與現有的模型視圖矩陣相乘。

另外,您可以使用工作的push和pop矩陣方式:

  • 設置你的矩陣
  • 推模型視圖矩陣
  • 看看隨機位置
  • 渲染場景紋理
  • 彈出模型視圖矩陣
  • 看原來的位置(可能沒必要)
  • 呈現您的四合一
+0

謝謝!這就說得通了。我沒有意識到,調用gluLookAt作爲矩陣轉換工作。 – user1782677 2013-02-15 03:19:00

+0

你需要認識到,在OpenGL中沒有像攝像機那樣的東西,所有東西都是矩陣變換。沒有必要有獨立的相機和場景概念,因爲無論您移動相機還是以相反的方式移動場景都會產生相同的效果。這就是爲什麼模型視圖矩陣只是簡單地描述一個單一的變換,這個變換就是你所看到的「相機」和「場景」之間的差異。 – wich 2013-02-15 03:23:29