我正在为iOS / tvOS开发基于SpriteKit的游戏,该游戏使用了一些SceneKit网格。在SceneKit网格中使用纹理时,我得到了一个奇怪的伪像。
我正在将纹理创建到SKTexture
对象中,然后将其作为contents
对象的diffuse
属性的SCNMaterial
属性(也具有其lightingModelName
属性设置为SCNLightingModelConstant
)。
此裁剪的屏幕快照演示了该问题。我两次绘制相同的纹理:较高版本使用SceneKit网格,而较低版本使用SpriteKit Sprite。纹理完全一样。
如果您看不到毛刺(取决于显示和显示设置),以下是同一图像的增亮版本:
如您所见,较低的版本不显示毛刺,而上方的版本显示毛刺。这是纹理中使用的原始图像(的一部分)。
奇怪的是,仅在AppleTV或iPad设备上运行游戏时,才会出现此伪像。在tvos / ios模拟器上运行它时,该工件不会出现。
我想知道是否有人能以什么样的方式在硬件加速的纹理中导致这种伪像。 (我正在考虑是否可以使PVRTC导致这种伪像?也许SceneKit在设备上运行时以某种方式压缩了幕后的纹理?我没有明确地使用PVRTC,但是默认情况下,SceneKit是进行某种转换)还有什么可能导致这种情况?)