所以我努力學習的OpenGL 2.0,在Android上我確實發揮了不少與iOS上的OpenGL 1,真的很喜歡它。安卓2.0的OpenGL第一人稱視角
我簡單的問題是有關攝像機和製作3D環境中,你可以四處走動(第一人稱)
我應該使用
Matrix.setLookAtM(mViewMatrix, 0, eyeX, eyeY, eyeZ, lookX, lookY, lookZ, upX, upY, upZ);
來控制相機在那裏我在世界(更新onDrawFrame),或設置上的onSurfaceCreated(一次),並使用
Matrix.setIdentityM(mViewMatrix, 0);
Matrix.translateM(mViewMatrix, 0, mMoveY, 0.0f, mMoveX);
Matrix.rotateM(mViewMatrix, 0, mDeltaY, 1.0f, 0.0f, 0.0f);
Matrix.rotateM(mViewMatrix, 0, mDeltaX, 0.0f, 1.0f, 0.0f);
,而不是感覺就像我在我的周圍旋轉的世界。
我所看到的例子,他們要麼做,OpenGL的1我用GLLookAt
顯然,使用產生正確結果的那個。兩者都可以使用,因爲'setLookAt'只是對翻譯和旋轉的更高抽象。 –
使用最適合您和用例的那個。在OpenGL中,你所做的只是旋轉你周圍的世界,沒有實際的攝像頭(ES 2中更是如此,無論如何你都可以完全控制着色器中的變換)。最後''setLookAt'除了計算*「world」*的旋轉和平移之外沒有什麼別的,就像一堆'translate'和'rotate'調用一樣,它只是一個更好的(或者更高級別)接口用於某些用例。如果你已經有了'mMove'和'mDelta'值,第二種方法似乎更容易。 –
請向我解釋如何看起來像調用一堆翻譯和旋轉方法調用一樣?轉換部分實際上並不是一個很大的工作,但旋轉必須執行sin/cos操作來創建旋轉矩陣,然後乘2個矩陣。另一方面,直接將3個基本向量和翻譯插入到矩陣中。基矢量是:X軸交叉(向前,向上),Y軸向上,Z軸向前=眼睛。它們中的每一個分別由一列表示。儘管如果結果相同,我確實同意,但最好使用最適合您的方法。 –