小编Oli*_*ver的帖子

使用纯Metal-API以及SceneKit或SpriteKit

我在一个应用程序中运行了一个SKView和一个MTKView,到目前为止一切运行良好.

唯一的问题是,这两种观点在视觉上都很差.他们只是并排.但我想让SKView内部的纯金属渲染与内部的一些SKNode一起移动.它是SKView内部的一种快速显示.

在金属方面运行了相当多的计算和渲染的东西.SKView应该为重型计算提供了一个很好的用户界面,并且为纯金属部件提供了极小但非常快速的渲染.

我已经考虑过将SceneKit与SpriteKit场景叠加使用,因为SCNRenderer提供了使用renderAtTime渲染自己的MTLCommandBuffer和MTLRenderPassDescriptor的可能性.

我实现了以下SCNSceneRendererDelegate方法并调用了我自己的render函数,它正在准备commandBuffer.

func renderer(renderer: SCNSceneRenderer, didRenderScene scene: SCNScene, atTime time: NSTimeInterval) {
    nodeArray.render()
}
Run Code Online (Sandbox Code Playgroud)

在commandBuffer准备好之后,我调用了我的SCNRenderer的renderAtTime方法.试验和错误向我显示命令缓冲区必须在调用renderAtTime后提交.如果我在它崩溃应用之前这样做.如果我不这样做,它将冻结应用程序.

func bufferFinished(renderer:SCNRenderer, commandBuffer: MTLCommandBuffer, renderPassDescriptor: MTLRenderPassDescriptor){
    let current=CFAbsoluteTimeGetCurrent()
    renderer.renderAtTime(current, viewport: gameView.bounds, commandBuffer: commandBuffer, passDescriptor: renderPassDescriptor)
    commandBuffer.commit()
}
Run Code Online (Sandbox Code Playgroud)

如果我这样做,应用程序正在运行,但没有显示其他金属上下文.我认为因为金属部分所以整个事情都很复杂.

是否有任何简单的示例,其中纯金属在SceneKit视图中呈现或更好地在SpriteKit视图中呈现?

scenekit sprite-kit swift metal

11
推荐指数
1
解决办法
2231
查看次数

标签 统计

metal ×1

scenekit ×1

sprite-kit ×1

swift ×1