【问题标题】:Objective-C, Objective-C++, C++ and Scene KitObjective-C、Objective-C++、C++ 和场景工具包
【发布时间】:2016-02-02 20:29:26
【问题描述】:

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

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

断言失败:(renderSize.x != 0),函数 -[SCNRenderContextMetal _setupDescriptor:forPass:isFinalTechnique:],文件 /BuildRoot/Library/Caches/com.apple.xbs/Sources/SceneKit/SceneKit-332.6/sources /Core3DRuntime/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];

【问题讨论】:

  • 显示堆栈跟踪和相关代码。
  • 您的框架是否已填充?例如'CGRect frame = [[UIScreen mainScreen] applicationFrame];'
  • 它是,但它被设置为 cgrectzero。我已经改变了它并且它有效。

标签: c++ ios scenekit objective-c++


【解决方案1】:

听起来您正在使用情节提要启动 SceneKit 场景。

如果是这样,最新版本的 SDK 现在要求您对视图设置约束,否则它们最终会变得微不足道。它可能只是在 SceneKit 场景上设置约束的功能。

如果不是,您还需要将框架设置为有效的值。例如

CGRect frame = [[UIScreen mainScreen] applicationFrame];

【讨论】:

  • 不,这一切都是在代码中完成的。我会发布相关代码。
  • 您是手动设置尺寸吗?基本要点是默认尺寸现在是垃圾。
  • 嗯,好的。我发现我正在将场景视图框架设置为 cgrectzero,这导致了问题。真的很蠢。
  • 请将此添加为答案,并接受它,以关闭问题。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-20
    • 1970-01-01
    相关资源
    最近更新 更多