私は iPad アプリを持っていて、openGL でメイン ビューを描画しています。デバイスが回転したときに自分の変更をアニメーション化したいと考えています。
このアプリはたまにしか描画しないことに注意してください。常にアニメーション化されているわけではありません。また、私のシーンは (非常に複雑な) 2D 描画であり、3D ではありません。デバイスの向きの変更中にディスプレイの中心を中心に回転させ、正しい縦横比を維持したいだけです。
現時点では、次のコードしかありません。
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
// nothing yet
}
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
IMMainView *mv = (IMMainView *)self.view;
[mv createRenderbuffer];
[mv drawView];
}
回転が完了したら、新しい幅と高さに一致するように OpenGL レンダー バッファーを再作成するだけです。
iOS のデフォルトの動作では、ビューが回転しているように見えますが、縦横比が変わると奇妙に引き伸ばされます。
描画パラメーターをアニメーション化して、遷移中に何かをより良く見せることができますが、(1) iOS によるレイヤーのアニメーション化を停止する方法と、(2) iOS に一致するこれらのメソッド呼び出しからアニメーション ループを設定する方法がわかりません。アニメーション。
たとえば、アニメーション中、実際のビューの幅と高さは徐々に変化していますか?
また、レンダリング バッファをいつ再作成するかという問題も考えられます。OpenGL バッファが iOS ビューの境界と一致しない場合、ピクセルの縦横比が正しくなく、描画の見栄えが悪いためです。
どんな助けでも大歓迎です。