gpt4 book ai didi

ios - SpriteKit SKTexture mipmap 不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:34:19 26 4
gpt4 key购买 nike

我不知道如何为 SKTexture 纹理应用 mipmap。我在 Swift 中使用 XCode 8.2.1。

这是我的方法:

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大小(锅都可以)全尺寸看起来像这样: full size image

然后我想把它的尺寸缩小到128*128像素

decrease size

这里是启用了 mipmapping 的输出: mipmapping enabled output 128*128

例如没有 mipmapping 的输出(只有默认的线性过滤)without mipmapping

他们看起来都一样。所以我认为 mipmaps 不适用。请帮助我,我已经花了 3 天时间尝试解决这个问题。

更新:作为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)

结果是一样的: enter image description here

最佳答案

如果 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

这样你就可以绝对确定事件的顺序是

  1. 开启纹理映射
  2. 执行缩放

希望这能奏效。

关于ios - SpriteKit SKTexture mipmap 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41788171/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com