Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何防止在旧iOS设备上渲染Zwoptex生成的精灵表时出现像素溢出?_Ios_Cocos2d X_Sprite Sheet_Zwoptex - Fatal编程技术网

如何防止在旧iOS设备上渲染Zwoptex生成的精灵表时出现像素溢出?

如何防止在旧iOS设备上渲染Zwoptex生成的精灵表时出现像素溢出?,ios,cocos2d-x,sprite-sheet,zwoptex,Ios,Cocos2d X,Sprite Sheet,Zwoptex,我打包了几个单独的精灵,并用Zwoptex生成了一张大小为2048*2048的大精灵表。但我缩小了尺寸以匹配每台iOS设备,比如iPad HD的2048*2048,iPhone的512*512等等 我发现Zwoptex中的“间距像素”选项会影响设备上精灵渲染的结果。该值意味着每个单独的精灵之间的空间(以像素为单位)填充在精灵表中。例如,如果我将该值设置得太低,则更新或更好的设备以及旧设备上发生像素溢出的可能性更大。但是如果我增加这个值,几率就会降低,对于足够高的值,像素出血(希望)不会发生 无论

我打包了几个单独的精灵,并用Zwoptex生成了一张大小为2048*2048的大精灵表。但我缩小了尺寸以匹配每台iOS设备,比如iPad HD的2048*2048,iPhone的512*512等等

我发现Zwoptex中的“间距像素”选项会影响设备上精灵渲染的结果。该值意味着每个单独的精灵之间的空间(以像素为单位)填充在精灵表中。例如,如果我将该值设置得太低,则更新或更好的设备以及旧设备上发生像素溢出的可能性更大。但是如果我增加这个值,几率就会降低,对于足够高的值,像素出血(希望)不会发生

无论如何,我将值设置为17-20左右,这非常高,并且它会占用sprite表上宝贵的空间。结果是,在iPhone模拟器上,仍然存在一个问题

由于我们只能限制某些设备安装特定iOS版本的游戏,但iPhone3GS仍然可以更新到最新版本,因此我需要解决这个问题

因此,我想知道如何防止从iPhone到iPad(包括视网膜)的所有iOS设备出现像素出血问题的解决方案。
如果您知道为精灵之间的“间距像素”选择特定值以消除渲染时的问题的任何最佳实践或实际解决方案,那将是非常棒的。

如果只有模拟器显示这些瑕疵,那么请务必忽略它们您的用户都不会在模拟器中运行您的应用程序,是吗?这个模拟器并不完美

每个纹理atlas sprite帧周围2个像素的间距足以(通常推荐)消除由像素出血引起的所有瑕疵。如果您仍然看到工件,它们不是间距太小的直接原因。不可能

我不确定Zwoptex,你真的需要手动创建每个缩小版本的纹理图集吗?你可能在那里做了些什么。试试看,如果这些文物就这样消失了,我不会感到惊讶

例如,一种类型的工件是由于未将对象放置在整数位置而导致的。如果两个对象的位置类似于(1.23545,10.0)和(41.23545,10.0),您可能会看到它们之间的间隙(通常为黑线)。使用整数坐标(1,10)和(41,10)可以解决问题。困难在于,这会一直延伸到层次结构,如果这些对象的父节点也位于非整数位置,您仍然可以体验此线间距工件


如果你四处搜索,你会发现许多cocos2d工件的因果讨论。要记住一件事:不要使用CC_FIX_ARTIFACTS_BY_STRECHING_TEXEL宏。这不是一个修复,它甚至不接近。它修复了非整数位置伪影,并引入了另一个伪影(更糟糕的是IMHO):在移动过程中出现混叠/闪烁。

我使用该程序自动生成不同的spritesheet版本,用于iPad HD、iPad和iPhone SD。我主要在iPad2上测试这个游戏,但我手头没有iPhone3GS,所以我倾向于信任模拟器。无论如何,我会在真正的设备上尝试,如果这不能解决问题,那么我会查看CC_FIX_ARTIFACTS_BY_STRECHING_TEXEL值,看看它是否设置,然后最后一个我会看看TexturePacker是否帮助我。我做完后再打给你。谢谢。更新:仅供参考:我没有启用那个宏。使用TexturePacker解决了我的问题。使用Zwoptex生成多分辨率SpriteSheet,尤其是更小的缩放尺寸(12.5%),结果显示分辨率不是POT,TexturePacker会检测到这一点。不管怎样,我试着使用TexturePacker生成的NPOT spritesheet,没有任何像素出血。我想我会考虑切换使用这个程序。谢谢