Mik*_*e S 6 ios sprite-kit swift ios8 sklightnode
我一直在使用SKLightNodeSpriteKit(iOS8中的新功能)进行实验,即使是在一个非常简单的测试用例中,我的性能也非常糟糕.例如,在纯色的单个光源上,我在第3代iPad上获得13.2 FPS.如果我添加第二个光源,它会下降到一个非常糟糕的7.7 FPS.SKSpriteNode
WWDC会话视频SpriteKit中的新功能提到如果你在同一个精灵上有多个灯光,你可能会得到低于60 FPS,但我甚至不能得到60 FPS.这是相关部分.
这是我在swift中的测试场景(它从一个光源开始,可以通过点击添加更多):
class GameScene: SKScene {
override func didMoveToView(view: SKView) {
let center = CGPointMake(size.width / 2.0, size.height / 2.0)
let background = SKSpriteNode(color: SKColor.lightGrayColor(), size: size)
background.position = center
background.lightingBitMask = 1
addChild(background)
let light = SKLightNode()
light.position = center
light.falloff = 1.0
light.lightColor = SKColor(hue: 0.62 , saturation: 0.89, brightness: 1.0, alpha: 0.4)
light.shadowColor = SKColor.blackColor().colorWithAlphaComponent(0.4)
addChild(light)
}
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
for touch: AnyObject in touches {
let location = touch.locationInNode(self)
let light = SKLightNode()
light.position = location
light.falloff = 1.0
light.lightColor = SKColor(hue: 0.62 , saturation: 0.89, brightness: 1.0, alpha: 0.4)
light.shadowColor = SKColor.blackColor().colorWithAlphaComponent(0.4)
addChild(light)
}
}
}
Run Code Online (Sandbox Code Playgroud)
以下是我在第三代iPad上运行的一些屏幕截图:

这是性能选项卡在单个光源运行时单击"分析"按钮后的样子:

这显然是GPU限制,但我想弄清楚的是,如果我只是做了一些非常错误的事情,或者这只是一个问题,它将(希望)在发布时间被清除.我目前正在使用Xcode6-Beta5.
UPDATE
我将我的iPhone 5S升级到iOS8并在那里尝试了同样的东西,它在60FPS和8个光源下运行完美.所以,我想这只是第三代iPad的GPU问题,而不是完成任务.我将在下一个测试版发布后再试一次,看看是否有任何变化,以防万一.
这最终只是第三代 iPad 上的 GPU 无法胜任使用SKLightNodes 的任务的问题。我现在使用当时最新版本的 Xcode(iOS 8.1 版本 6.1 (6A1052d))在 iOS 8 和 iOS 8.1 上进行了测试,结果相同。我的测试代码在具有 8 个光源的 iPhone 5s 上以 60FPS 运行,因此代码本身似乎不是问题。
| 归档时间: |
|
| 查看次数: |
1987 次 |
| 最近记录: |