メソッド/ハンドラーを使用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];
}