3

メソッド/ハンドラーを使用CADisplayLinkしてiOSアプリで使用しています。renderOneFrame私の理解では、これは画面がリフレッシュされるたびに、つまり 60Hz でトリガーされるということです。

しかし、私のアプリは 60FPS での実行に苦労しており、さらに機能を追加する必要があるため、古いハードウェアでは実現できないのではないかと心配しています。可変レートで実行するのではなく、30 FPS でレンダリングして、余裕を持たせたいと思います。

これを簡単に実現する方法はありますか?

これがコアのようですが、私は iOS に移植する C++ コーダーなので、少し混乱しています (見つけたサンプルからコピーしました)。

- (void)go {

    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    mLastFrameTime = 1;
    mStartTime = 0;

    try {
        app = new MyApp()
    } catch( Ogre::Exception& e ) {
        std::cerr << "An exception has occurred: " <<
        e.getFullDescription().c_str() << std::endl;
    }

    mDate = [[NSDate alloc] init];
    mLastFrameTime = -[mDate timeIntervalSinceNow];

    mDisplayLink = [NSClassFromString(@"CADisplayLink") displayLinkWithTarget:self selector:@selector(renderOneFrame:)];
    [mDisplayLink setFrameInterval:mLastFrameTime];
    [mDisplayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];

    [pool release];
}
4

1 に答える 1