我正在用LWJGL
製作3D遊戲。在這個遊戲中,無論何時按下箭頭鍵,我都希望屏幕沿該方向旋轉,而不管當前的方向如何。我正在努力在代碼中實現這一點。使用三個基於旋轉矢量3f的函數,並不能實現這一點。上下旋轉是因爲首先調用glRotatef(rotation.x, 1, 0, 0)
,但只有當您不向上或向下時,左右才能正常工作。如果是,則圍繞通用Y軸旋轉,並且相機旋轉。我看到另一個實現可能使用gluLookAt()
,但我想我會遇到同樣的問題。如何在openGL或更具體的LWJGL中相對於相機旋轉?
編輯 我以爲我解決我的問題,通過改變順序由名爲取決於我想旋轉的方向在哪裏glRotatef()。我認爲這是可行的,因爲在我的比賽中,我只會一次旋轉一個軸。它在某種程度上有效,但在某些方面它沒有。
if(updown){
glRotatef(rotation.x, 1, 0, 0);
glRotatef(rotation.y, 0, 1, 0);
} else if(leftright){
glRotatef(rotation.y, 0, 1, 0);
glRotatef(rotation.x, 1, 0, 0);
}
glTranslatef(position.x, position.y, position.z);
看看紅皮書的第2章和第3章,它可能會幫助你圍繞在opengl中矩陣操作的順序:http://www.glprogramming.com/red/ – Patashu 2013-03-28 03:31:07
你應該回答你自己的問題問題是否找到解決方案。如果答案和問題是單獨的,對於人來說更容易。 – Hydronium 2013-03-28 18:04:56
對不起。當我真正解決這個問題時,我會考慮這一點。我的解決方案實際上不起作用 – ErMay12 2013-03-28 19:01:23