首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SpriteKit SKTexture mipmap不工作

SpriteKit SKTexture mipmap不工作
EN

Stack Overflow用户
提问于 2017-01-22 06:54:39
回答 1查看 246关注 0票数 2

我想不出如何为SKTexture纹理应用mipmap。我使用的是XCode 8.2.1和Swift。

以下是我的方法:

代码语言:javascript
复制
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,然后通过缩放方法或操作执行缩放。

代码语言:javascript
复制
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)

结果是相同的:

EN

回答 1

Stack Overflow用户

发布于 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

通过这种方式,您完全可以确定事件的顺序是

  1. 打开mipmapping
  2. 执行缩放

希望这能成功。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41788171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档