2017-01-22 2 views
2

SKTexture 텍스처에 밉맵을 적용하는 방법을 이해할 수 없습니다. Swift와 함께 Xcode 8.2.1을 사용하고 있습니다. 여기 SpriteKit SKTexture 밉맵이 작동하지 않습니다.

내 방법 :

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 enabled output 128*128

그리고 예를 들어 출력을 그들은 모두 같은 모양 without mipmapping

를 (단 선형 필터링을 기본). 그래서 나는 밉맵이 적용되지 않는다고 생각한다. 제발 도와주세요, 나는이 문제를 해결하려고 3 일을 보냈습니다.

UPD : 나에게 말했다 Confused, 나는 코드에서 모든 작업을했다. 밉맵이 활성화 된 텍스처를 생성하고이를 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) 

결과는 동일합니다 다음 밉 매핑이 코드에 의해 활성화되기 전에 엑스 코드 SpriteKit 화면 편집기가 텍스처의 크기 조정을하고있는 경우는, 전혀 놀라게하지 것이다 enter image description here

+2

네 말이 맞아. 그들은 정확히 동일합니다. 나는 그들을 Photoshop에 떨어 뜨리고 Difference 혼합을했다. 밉 매핑이없는 화면은 캡쳐 화면에서 왼쪽에있는 한 픽셀이며, 일단 수정되면 수정됩니다. – Confused

답변

1

. Xcode와 SpriteKit SceneEditor가 텍스처로 저장하기 위해 공모했기 때문에 텍스처의 128x128 버전이 밉 매핑을 사용한다는 것을 의미합니다.

그래서 대신 코드에서 밉 매핑을 켠 후, 장면 편집기의 규모를 설정하면 SKSpriteNode 확장하려면이 옵션을 사용하십시오 SKAction 확장 작업에

https://developer.apple.com/reference/spritekit/skspritenode/1645445-scale

및/또는 실험 :

당신이 일련의 사건

것을 절대적으로 확신 할 수 이런 식으로

https://developer.apple.com/reference/spritekit/skaction

밉 매핑

    1. 켭니다

    스케일링 수행 그리고 희망이 작동합니다.

  • +0

    답변 해 주셔서 감사합니다. 그러나 도움이되지 않습니다. 위의 UPD를보십시오. – widesteppe

    +0

    DOH! 어떤 장치에서 이것을 테스트 해 보셨습니까? – Confused

    +0

    내 Mac 및 iOS 시뮬레이터에서 테스트되었습니다. – widesteppe

    관련 문제