我想不出如何为SKTexture纹理应用mipmap。我使用的是XCode 8.2.1和Swift。
以下是我的方法:
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像素。

下面是启用mipmapping的输出:

例如,没有linear的输出(只有默认的线性滤波)

他们看起来都一样。所以我觉得mipmap不适用。请帮帮我,我花了三天时间来解决这个问题。
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)结果是相同的:

发布于 2017-01-22 12:22:40
如果Xcode SpriteKit场景编辑器正在您的代码激活mipmapping之前对您的纹理进行调整,这一点也就不足为奇了。这意味着您的纹理的128x128版本上有mipmapping,因为这就是Xcode和SpriteKit SceneEditor合谋存储的纹理。
因此,在打开代码中的mipMapping之后,不要在场景编辑器中设置缩放,而是使用它来缩放SKSpriteNode:
https://developer.apple.com/reference/spritekit/skspritenode/1645445-scale
和/或SKAction缩放操作的实验:
https://developer.apple.com/reference/spritekit/skaction
通过这种方式,您完全可以确定事件的顺序是
希望这能成功。
https://stackoverflow.com/questions/41788171
复制相似问题