Я не могу понять, как применять mipmaps для текстуры SKTexture. Я использую XCode 8.2.1 с Swift.SpriteKit SKTexture mipmap не работает
Вот мой метод:
override func sceneDidLoad() {
logo = childNode(withName: "logo") as! SKSpriteNode
let texture: SKTexture! = SKTexture.init(imageNamed: "logo")
texture.usesMipmaps = true
logo.texture = texture
}
Я использую образец изображение в формате PNG 512 * 512 размера (горшок как) Полного размера это выглядит следующим образом:
Тогда я хочу, чтобы уменьшить его размер до 128 * 128 пикселей
А вот выход с множественное отображение с поддержкой:
И для примера вывода без множественного отображения (только по умолчанию линейной фильтрации)
Они оба выглядят одинаково. Поэтому я думаю, что mipmaps не применялись. Помогите мне, пожалуйста, я потратил 3 дня, пытаясь решить эту проблему.
UPD: Как Confused сказал мне, я сделал всю работу в коде. Созданная текстура с включенным mipmaping, назначьте ее SKSpriteNode, а затем выполните масштабирование по методу масштабирования или действию.
let texture = SKTexture.init(imageNamed: "logo")
texture.usesMipmaps = true
logo = SKSpriteNode.init(texture: texture)
logo.position = CGPoint(x: 0, y: 0)
self.addChild(logo)
//logo.scale(to: CGSize(width: 128, height: 128))
let scaleAction = SKAction.scale(to: CGSize(width: 128, height: 128), duration: 1)
logo.run(scaleAction)
Вы правы. Они точно такие же. Я бросил их в Photoshop и сделал разницу. Тот, у кого нет mipmapping, есть один пиксель слева от того, где он должен быть, на вашем скриншоте, но как только это исправлено, они идентичны. – Confused