2017-11-27 17 views
1

iPhone 렌더러에서 iPhone X (iOS 11.1.2)를 실행할 때 SceneKit 앱에 문제가 있습니다. iOS 9 이상 버전에서 동일한 색상 렌더링을 얻으려면 앱에 plst 키 SCNDisableLinearSpaceRendering이 YES로 설정되어 있어야합니다. 또한 overlaySKScene을 통해 추가 된 SpriteKit 2D 오버레이가 있습니다.iPhone X에서 SceneKit + SpriteKit 오버레이로 인한 픽셀 형식 오류

릴리스 빌드에서 iPhone X는 오버레이에서 이상한 색상을 표시하지만 3D 장면에서는 이상한 색상을 표시합니다. 디버그 오류 로그와 충돌을 구축 :

- [MTLDebugRenderCommandEncoder validateFramebufferWithRenderPipelineState :] : 1196 : 프레임 버퍼의 pixelFormat (MTLPixelFormatBGR10_XR)와 일치하지 않는 컬러 첨부 파일 0, 파이프 라인의 pixelFormat (MTLPixelFormatRGBA8Unorm_sRGB를) 렌더링을 위해`주장 실패 '.

내가 이해하는 방식은 2D 및 3D 장면의 픽셀 형식이 다른 것입니다. 나는 내가 어떻게 바꿀 수 있는지 전혀 모른다. 어떤 제안?

오류는 시뮬레이터 나 내가 테스트 한 다른 기기 (4s, 5s, 6plus, 6s, 7, iPad Pro 1G)가 아닌 iPhone X에만 표시됩니다. OpenGL ES 렌더러를 사용할 때 모든 것이 정상입니다. SCNDisableLinearSpaceRendering을 끄면 Metal 렌더러에서도 모든 것이 작동하지만 3D 렌더링은 매우 다릅니다.

당신이 아이폰 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에서 발생합니까?

+0

본 적이 있습니까? https://stackoverflow.com/questions/39522086/scenekit-how-to-reproduce-ios-9-lighting-color-effect-one-directional-one-amb – Knight0fDragon

답변

0

그동안 나는 iOS 11에서 다른 여러 가지 SceneKit 문제를보고하는 사람들을 보았습니다. 그래서 이것은 iOS 11의 버그라고 생각합니다. 한 달 전에 레이더를 제출했지만 문제는 여전히 11.2.5에 있습니다.

내 현재 해결 방법은 금속 대신 OpenGL ES 렌더러를 사용하는 것입니다.