首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将SKTextureFilteringNearest与SKTextureAtlas结合使用

如何将SKTextureFilteringNearest与SKTextureAtlas结合使用
EN

Stack Overflow用户
提问于 2013-11-15 01:48:43
回答 3查看 1.5K关注 0票数 9

我似乎有一个问题,使用SKTextureAtlas和最近邻居过滤纹理。当我使用没有SKTextureAtlas的最近邻过滤时,它工作得很好,但是当我使用SKTextureAtlas时,一切都变成了线性过滤。

没有SKTextureAtlas的代码和结果:

代码语言:javascript
复制
SKTexture* texture = [SKTexture textureWithImageNamed:@"grass"];
texture.filteringMode = SKTextureFilteringNearest;
SKSpriteNode* node = [SKSpriteNode spriteNodeWithTexture:texture size:CGSizeMake(512,512)];

应该产生最近的邻居过滤&做

使用SKTextureAtlas的代码和结果:

代码语言:javascript
复制
SKTextureAtlas* atlas = [SKTextureAtlas atlasNamed:@"myAtlas"];
SKTexture* texture = [atlas textureNamed:@"grass"];
texture.filteringMode = SKTextureFilteringNearest;
SKSpriteNode* node = [SKSpriteNode spriteNodeWithTexture:texture size:CGSizeMake(512,512)];

应该产生最近邻滤波&

有什么建议吗?

EN

回答 3

Stack Overflow用户

发布于 2014-01-17 10:06:25

我一直在努力解决同样的问题。

当您为来自一个SKTexture的SKTextureAtlas设置过滤模式时,它似乎为该地图集中的所有内容设置了过滤模式。

我最终解决了这个问题,制作了两个SKTextureAtlas (AtlasLinear和AtlasNearest)。一个是我的普通艺术品,另一个是皮皮拉。这是一种魅力。

然而,在非常小的atlasses,我有时会得到奇怪的小像素错误。如果这个弹出给你,它实际上有助于添加一些大的白色块png到你的像素艺术地图集。

祝好运。

票数 4
EN

Stack Overflow用户

发布于 2014-05-24 20:25:34

这的确是一个奇怪的问题。在我看来,缺少一个API:[SKTextureAtlas atlasNamed:atlasName withFilteringMode:filteringMode]

我暂时不使用这样的API,而是使用以下方法:

代码语言:javascript
复制
-(SKTextureAtlas *) textureAtlasWithName:(NSString *)atlasName filteringMode:(SKTextureFilteringMode)filteringMode {

    SKTextureAtlas * result = [SKTextureAtlas atlasNamed:atlasName];

    NSArray * textureNames = [result textureNames];

    if ([textureNames count] > 0) {
        SKTexture * aTexture = [result textureNamed:[textureNames lastObject]];
        [aTexture setFilteringMode:filteringMode];

    } else {
        NSLog(@"WARNING: couldn't find any textures in the atlas %@; filtering mode set likely failed.", result);
    }

    return result;
}
票数 3
EN

Stack Overflow用户

发布于 2014-01-19 01:44:44

我设法在我的程序中解决了这个问题。我发现,如果一个纹理地图集被实例化不止一次,即使地图集中的所有纹理负载都被设置为SKTextureFilteringNearest,纹理也是用线性滤波来呈现的。我最后所做的是通过一个单例提供我的地图集,并确保所有的纹理加载与过滤设置为SKTextureFilteringNearest和它完美地工作。

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

https://stackoverflow.com/questions/19992048

复制
相关文章

相似问题

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