2017-11-27 5 views
1

Ich habe ein unangenehmes Problem mit einer SceneKit App, wenn sie auf iPhone X (iOS 11.1.2) mit dem Metall-Renderer ausgeführt wird. Die App hat die plist Schlüssel SCNDisableLinearSpaceRendering auf YES gesetzt, um die gleiche Farbwiedergabe auf iOS 9 und spätere Versionen zu erhalten. Es hat auch eine SpriteKit 2D-Overlay über overlaySKScene hinzugefügt.Pixel Format Fehler mit SceneKit + SpriteKit Overlay auf iPhone X

In Version baut, zeigt die iPhone X seltsame Farben im Overlay, aber nicht in der 3D-Szene. Debug baut Crash mit dem Fehlerprotokoll:

- [MTLDebugRenderCommandEncoder validateFramebufferWithRenderPipelineState:]: 1196: failed Behauptung `Für Farb Befestigung 0, macht die Pipeline des Pixelformat (MTLPixelFormatRGBA8Unorm_sRGB) nicht das Pixelformat des Framebuffer passen (MTLPixelFormatBGR10_XR)‚.

So wie ich das verstehe, ist, dass das Pixelformat der 2D- und 3D-Szenen unterschiedlich ist. Ich habe keine Ahnung, wie ich das ändern könnte. Irgendwelche Vorschläge?

Der Fehler wird nur auf dem iPhone X angezeigt, nicht auf dem Simulator oder einem anderen Gerät, das ich getestet habe (4s, 5s, 6 Plus, 6s, 7, iPad Pro 1G). Wenn ich den OpenGL ES Renderer benutze, ist alles in Ordnung. Wenn ich SCNDisableLinearSpaceRendering ausschalten, funktioniert alles mit dem Metall-Renderer auch, aber die 3D-Farbwiedergabe ist sehr unterschiedlich, natürlich.

Wenn Sie ein iPhone X haben, können Sie diese reproduzieren, indem Sie ein neues Projekt aus der Spielvorlage erstellen und das Hinzufügen dieser Code in viewDidLoad():

let overlaySize = CGSize(width: 100, height: 100) 
let overlay = SKScene(size: overlaySize) 
let sprite = SKSpriteNode(color: UIColor.blue, size: overlaySize) 
overlay.addChild(sprite) 
scnView.overlaySKScene = overlay 

Ich würde auch sehr daran interessiert sein, wenn das zu hören tritt auch auf iPhone 8/8 Plus auf?

+0

hast du https://stackoverflow.com/questions/39522086/scenekit-how-to-reproduce-ios-9-lighting-color-effect-one-directional-one-amb gesehen – Knight0fDragon

Antwort

0

In der Zwischenzeit habe ich Leute gesehen, die mehrere andere SceneKit-Probleme mit iOS 11 gemeldet haben. Ich glaube, das ist ein Bug in iOS 11. Ich habe vor einem Monat einen Radar gemeldet, aber das Problem besteht immer noch in 11.2.5.

Meine aktuelle Problemumgehung ist die OpenGL ES-Renderer statt Metall zu verwenden.

Verwandte Themen