我似乎遇到了使用SKTextureAtlas和最近邻居过滤纹理的问题.当我使用没有SKTextureAtlas的最近邻居过滤时它工作正常,但是当我使用SKTextureAtlas时,所有内容都只是改为线性过滤.
没有SKTextureAtlas的代码和结果:
SKTexture* texture = [SKTexture textureWithImageNamed:@"grass"];
texture.filteringMode = SKTextureFilteringNearest;
SKSpriteNode* node = [SKSpriteNode spriteNodeWithTexture:texture size:CGSizeMake(512,512)];
Run Code Online (Sandbox Code Playgroud)
应该产生最近邻过滤和做
SKTextureAtlas的代码和结果:
SKTextureAtlas* atlas = [SKTextureAtlas atlasNamed:@"myAtlas"];
SKTexture* texture = [atlas textureNamed:@"grass"];
texture.filteringMode = SKTextureFilteringNearest;
SKSpriteNode* node = [SKSpriteNode spriteNodeWithTexture:texture size:CGSizeMake(512,512)];
Run Code Online (Sandbox Code Playgroud)
应该产生最近邻过滤而不是
有什么建议?
我正在制作一个精灵套件游戏,显然有一个带有平铺纹理的大型SKSpriteNode比使用多个带有平铺纹理的SKSpriteNode更有效.我的问题是当我尝试使用5x5瓷砖时
SKTexture* tex = [SKTexture textureWithRect:CGRectMake(0,0,5,5) inTexture:[SKTexture textureWithImageNamed:@"tile.png"]];
SKSpriteNode* node = [SKSpriteNode spriteNodeWithTexture:tex size:CGSizeMake(100,100)];
Run Code Online (Sandbox Code Playgroud)
图像的大小适当,但它被夹紧而不是平铺.在openGL术语中,我得到一个GL_CLAMP_TO_EDGE,我想要一个GL_REPEAT.无论如何,我可以在单个SKSpriteNode中实现纹理的平铺效果,而无需创建非常大的图像.
这是我的问题的图像: