在我的GLSurfaceView.Renderer中,我以兩部分來描繪我的場景。第一組是偏移和旋轉,而第二組是對齊到「相機」,所以我應用glRotate和glTranslate,然後應用完全相反的glTranslate和glRotate。在某些設備上,這可以正常工作,但在其他設備上,整個場景會慢慢旋轉「中心」。場景慢慢旋轉
這裏的的onDraw()函數:
@Override
public void onDrawFrame(GL10 gl) {
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
// rotate card table
gl.glRotatef(-20f, 1f, 0f, 0f);
gl.glRotatef( 5f, 0f, 1f, 0f);
gl.glRotatef(-10f, 0f, 0f, 1f);
gl.glTranslatef(1f, 3f, 0f);
mDeck.draw(gl);
// undo rotate for buttons/overlays
gl.glTranslatef(-1f, -3f, 0f);
gl.glRotatef(10f, 0f, 0f, 1f);
gl.glRotatef(-5f, 0f, 1f, 0f);
gl.glRotatef(20f, 1f, 0f, 0f);
mOverlayBtns.draw(gl);
mPass.draw(gl);
}
完整的源代碼可以在GitHub上找到,here.
有什麼明顯的我失蹤?有更好的方法來處理旋轉,然後旋轉回來嗎?
到目前爲止,我已經注意到了這個問題:
這些設備做
- 的Nexus 4
- HTC感覺不顯示問題:
- Galaxy Nexus
- 的Nexus 7
- Xoom的