2011-11-10 61 views
0

我是OpenGL的新手,並試圖創建一個簡單的迷宮,我可以通過使用第一人稱視角來遍歷。我有迷宮渲染和一切都很好。但我的第一人稱相機角度最終成爲第三人稱相機。相機圍繞相機的某個點旋轉。如何在OpenGL中正確實現基本的第一人稱相機?

我的代碼爲實際的旋轉和平移

void camera(){ 
    glMatrixMode(GL_MODELVIEW); 
    glLoadIdentity(); 
    glRotatef(pitch, 1, 0, 0); 
    glRotatef(yaw, 0, 1, 0); 
    glTranslatef(player.x, player.y, player.z); 
} 

這也是第一平移和旋轉在渲染這種情況發生。 感謝您的幫助。

+0

「相機圍繞的某一點盈相機。」你看到的是什麼讓你這麼說?唯一可能的方法是在旋轉視圖時'player'位置發生變化。 –

+0

我在'player'繪製了一個小金字塔,並且相機在旋轉時繞着該位置旋轉。 – Mirza

回答

1

相機轉型需要倒置,讓你在移動相機位置,在這種情況下,球員的位置,到原點:

glTranslatef(-player.x, -player.y, -player.z); 
0

我建議你建立你的迷宮,放下它,然後使用gluLookAt()來獲得你的第一人稱視角。你現在正在做的是靜靜地站在你周圍的迷宮。你這樣做很難。

+2

你剛剛說的和他在做什麼之間沒有任何區別,除了他建議使用'gluLookAt'時,他使用了幾次輪轉和翻譯。所有'gluLookAt'都會生成一個矩陣,就像他正在做的一樣。圍繞固定相機移動世界與在世界上移動固定相機沒有什麼不同。這一切都結束在同一個地方:相對於一個固定的相機空間,準備投影。這是一個概念上的差異,而不是代碼差異。 –