Objective-C、Objective-C++、C++ 和 Scene Kit

Objective-C, Objective-C++, C++ and Scene Kit

我有一个混合了纯 C++ 和 Objective-C++ 的项目,以便合并一些 C++ 库。

我试过添加一些基本的 SCNScenes 到组合中。 (我的基本意思是一个场景中有一个盒子节点,就是这样)。每次我收到错误:

Assertion failed: (renderSize.x != 0), function -[SCNRenderContextMetal _setupDescriptor:forPass:isFinalTechnique:], file /BuildRoot/Library/Caches/com.apple.xbs/Sources/SceneKit/SceneKit-332.6/sources/Core3DRuntime/NewRenderer/SCNRenderContextMetal.mm, line 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];

我发现如果将 SCNView 框架设置为 CGRectZeroSceneKit 会出现拟合。必须至少有 1 个像素的渲染空间。就这么简单。