GLSurfaceView で 2D 画像を表示しており、特定の角度 (つまり、180、75、360...) で回転させたい
タッチ イベントで次のコードを記述しました (ここで GPUImageView は GLSurfaceView を拡張します)。2 本の指の回転ジェスチャを処理する Rotate Gesture Detector クラスから変数 rotationDegree の値を取得しています。以下のコードは GLSufaceview を回転させますが、GLSurfaceView に表示されるコンテンツ / iamge は同じままです (内部で回転しません)。Androidには例がありますが、それらは3D用であり、度付きの回転ではありません。
@Override
public boolean onTouchEvent(MotionEvent event)
{
rotationDetector.onTouchEvent(event);
/* Rotate View Here */
GPUImageView.this.setRotation(rotationDegree);
requestRender();
return true;
}
2 本の指の回転に関連するイベントをディスパッチするカスタム回転検出クラスがあります。
private class RotateListener extends RotateGestureDetector.SimpleOnRotateGestureListener
{
@Override
public boolean onRotate(RotateGestureDetector detector)
{
rotationDegree -= detector.getRotationDegreesDelta();
return true;
}
}