У меня неприятная проблема с приложением SceneKit при запуске на iPhone X (iOS 11.1.2) с помощью средства визуализации Metal. В приложении для ключа plist SCNDisableLinearSpaceRendering
установлено значение YES, чтобы получить такую же цветопередачу в iOS 9 и более поздних версиях. Он также имеет наложение SpriteKit 2D, добавленное через overlaySKScene
.
В релизных сборках iPhone X показывает странные цвета в наложении, но не в 3D-сцене. Сбой отладочных сборок с журналом ошибок:
- [MTLDebugRenderCommandEncoder validateFramebufferWithRenderPipelineState:]: 1196: неудачное утверждение `Для прикрепления цвета 0 пиксельный формат конвейера рендеринга (MTLPixelFormatRGBA8Unorm_sRGB) не соответствует pixelFormat_Format (MTLPix) фреймбуфера.
Насколько я понимаю, формат пикселей 2D и 3D сцен различен. Я понятия не имею, как я могу это изменить. Какие-либо предложения?
Ошибка будет отображаться только на iPhone X, а не на симуляторе или любом другом устройстве, которое я тестировал (4s, 5s, 6 Plus, 6s, 7, iPad Pro 1G). Когда я использую рендерер OpenGL ES, все в порядке. Когда я выключаю SCNDisableLinearSpaceRendering, все работает и с Metal Renderer, но 3D-цветопередача, конечно, сильно отличается.
Если у вас iPhone X, вы можете воспроизвести это, создав новый проект из шаблона Game и добавив этот код в 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
Мне также было бы очень интересно услышать, происходит ли это и на iPhone 8/8 Plus?