过去几天我一直在研究 iOS 版 SceneKit。我在尝试创建自定义几何图形时遇到了一个问题。每当我尝试显示几何图形时,它都不会绘制,并在运行时向我显示此错误。
SceneKit:错误,C3DRendererContextSetupResidentMeshSourceAtLocation - 不支持双精度
我创建了一个针对 iOS 的游乐场来测试一个更简单的自定义几何示例,并研究了这个问题 https://stackoverflow.com/questions/24493273/custom-scenekit-geometry-in-swift-on-ios-not-working-but-equivalent-objective-c关于使用 swift 与 Objective C 的自定义几何图形。
我尝试使用 Objective C 的另一个项目,但仍然收到相同的错误消息。
当以 Playground 或完整项目中的桌面为目标时,不会出现该错误,并且几何图形绘制正确。仅当面向 iOS 时才会出现错误消息。
import SceneKit
import QuartzCore // for the basic animation
import XCPlayground // for the live preview
// create a scene view with an empty scene
var sceneView = SCNView(frame: CGRect(x: 0, y: 0, width: 300, height: 300))
var scene = SCNScene()
sceneView.scene = scene
// start a live preview of that view
XCPShowView("The Scene View", sceneView)
// default lighting
sceneView.autoenablesDefaultLighting = true
// a camera
var camera = SCNCamera()
var cameraNode = SCNNode()
cameraNode.camera = camera
cameraNode.position = SCNVector3(x: 0, y: 0, z: 10)
scene.rootNode.addChildNode(cameraNode)
// create geometry
var verts = [SCNVector3(x: 0,y: 0,z: 0),SCNVector3(x: 1,y: 0,z: 0),SCNVector3(x: 0,y: 1,z: 0)]
let src = SCNGeometrySource(vertices: &verts, count: 3)
let indexes: [CInt] = [0, 1, 2]
let dat = NSData(
bytes: indexes,
length: sizeof(CInt) * countElements(indexes)
)
let ele = SCNGeometryElement(
data: dat,
primitiveType: .Triangles,
primitiveCount: 1,
bytesPerIndex: sizeof(CInt)
)
let geo = SCNGeometry(sources: [src], elements: [ele])
let nd = SCNNode(geometry: geo)
scene.rootNode.addChildNode(nd)
这是我在操场上使用的绘制三角形的代码。针对桌面时使用相同的代码。
我该如何解决这个问题并显示 iOS 的几何图形?