У меня есть проект, который представляет собой смесь чистого C ++ и Objective-C ++ для включения некоторых библиотек C ++.
Я попытался добавить некоторые основные SCNScenes
в смесь. (Под базовым я подразумеваю сцену с узлом в нем и все тут). Каждый раз, когда я получаю ошибку:
Ошибка подтверждения: (renderSize.x! = 0), функция — [SCNRenderContextMetal _setupDescriptor: forPass: isFinalTechnique:], файл /BuildRoot/Library/Caches/com.apple.xbs/Sources/SceneKit/SceneKit-332.6/suntime/it NewRenderer / SCNRenderContextMetal.mm, строка 688.
Кто-нибудь знает, что вызывает это, и если так, как я могу обойти это?
РЕДАКТИРОВАТЬ:
В моем ViewController.mm
У меня есть:
self.sceneView = [[SCNView alloc] initWithFrame:frame];
self.sceneView.scene = [SCNScene scene];
SCNNode *cube = [SCNNode nodeWithGeometry:[SCNBox boxWithWidth:1.0 height:1.0 depth:1.0 chamferRadius:0]];
cube.geometry.firstMaterial.diffuse.contents = [UIColor redColor];
[self.sceneView.scene.rootNode addChildNode:cube];
[self.view addSubview:self.sceneView];
Похоже, вы запускаете сцену SceneKit, используя раскадровку.
Если это так, то последняя версия SDK теперь требует, чтобы вы установили ограничения для представлений, иначе они получат тривиальный размер. Это может быть просто функцией установки ограничений на вашу сцену SceneKit.
Вы также должны установить кадр на что-то действительное, если это не так. например
CGRect frame = [[UIScreen mainScreen] applicationFrame];
Я обнаружил, что SceneKit
подходит, если вы установите SCNView
кадр к CGRectZero
, Должен быть как минимум 1 пиксель рендеринга недвижимости. Просто как тот.