iPhoneのX(iOS 11.1.2)でMetalレンダラを使用しているときに、SceneKitアプリに厄介な問題があります。アプリは、iOS 9以降のバージョンで同じカラーレンダリングを得るために、plstキーSCNDisableLinearSpaceRendering
がYESに設定されています。また、overlaySKScene
によって追加されたSpriteKit 2Dオーバーレイもあります。iPhone XでのSceneKit + SpriteKitオーバーレイでのピクセルフォーマットエラー
リリースビルドでは、iPhone Xではオーバーレイに奇妙な色が表示されますが、3Dシーンでは奇妙な色が表示されます。デバッグは、エラー・ログとクラッシュを構築します。
- [MTLDebugRenderCommandEncoder validateFramebufferWithRenderPipelineState:]:1196:フレームバッファのピクセルフォーマット(MTLPixelFormatBGR10_XR)と一致しない色アタッチメント0、パイプラインのピクセルフォーマット(MTLPixelFormatRGBA8Unorm_sRGB)をレンダリングするために `アサーションに失敗しました「。
私がこれを理解する方法は、2Dおよび3Dシーンのピクセル形式が異なることです。どのように私はそれを変更することができないのか分かりません。助言がありますか?
エラーは、シミュレータまたは私がテストした他のデバイス(4s、5s、6plus、6s、7、iPad Pro 1G)ではなく、iPhone Xにのみ表示されます。 OpenGL ESレンダラを使用すると、すべてが問題ありません。 SCNDisableLinearSpaceRenderingをオフにすると、Metalレンダラもすべて動作しますが、3Dカラーレンダリングは非常に異なります。
あなたがiPhone Xを持っている場合は)ゲームのテンプレートから新しいプロジェクトを作成し、の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でも発生しますか?
あなたはhttps://stackoverflow.com/questions/39522086/scenekit-how-to-reproduce-ios-9-lighting-color-effect-one-directional-one-ambを見ましたか? – Knight0fDragon