我正在制作游戏,我想在不同的线程上运行游戏逻辑代码和渲染代码,以期提高性能。但是对于我的生活,我无法弄清楚如何CADisplayLink
在生成的线程中运行 a 。现在我正在使用NSThread
多线程。我读过关于NSOperationQue
,但我并不是很了解它。有人能指出我正确的方向吗?这是我现在正在使用的代码,-logicLoop
并且-animationLoop
都在单独的线程上运行,所以我认为它们会获得单独的运行循环,并且 CADisplayLinks 将在不同的线程上。
-(void)logicLoop {
NSLog(@"adding");
logicTimer = [CADisplayLink displayLinkWithTarget:self selector:@selector(updateModel)];
logicTimer.frameInterval = kFrameInterval;
[logicTimer addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
}
-(void)animationLoop {
NSLog(@"animation");
animationTimer = [CADisplayLink displayLinkWithTarget:self selector:@selector(renderScene)];
animationTimer.frameInterval = kFrameInterval;
[animationTimer addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
}
有任何想法吗?
我应该NSOperationQue
为此使用吗?如果是这样,我会怎么做?我真正需要的是一种在单独的线程上运行游戏循环和动画循环的有效方法,这样它们就不会相互减慢,并且游戏会显得更加流畅。
谢谢!