GLSurfaceView.Rendererでは、シーンを2つの部分に分けて描画しています。最初のグループはオフセットされて回転し、2番目のグループは「カメラ」に位置合わせされるため、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のここにあります。
私が見逃している明らかなものはありますか?回転してから後ろに回転するのを処理するためのより良い方法はありますか?
これまでのところ、私はこの問題に気づきました:
- ネクサス4
- HTCセンセーション
- 名前が思い出せない別のLG電話
これらのデバイスは問題を示していません:
- ギャラクシーネクサス
- ネクサス7
- Xoom