小编hug*_*919的帖子

SceneKit 金属深度缓冲区

我正在尝试使用 SceneKit 编写增强现实应用程序,并且需要使用SCNSceneRenderer 的 unprojectPoint方法给定 2D 像素和深度,从当前渲染帧获取准确的 3D 点。这需要 x、y 和 z,其中 x 和 y 是像素坐标,通常 z 是从该帧的深度缓冲区读取的值。

SCNView 的委托有这个方法来渲染深度帧:

func renderer(_ renderer: SCNSceneRenderer, willRenderScene scene: SCNScene, atTime time: TimeInterval) {
    renderDepthFrame()
} 

func renderDepthFrame(){

    // setup our viewport
    let viewport: CGRect = CGRect(x: 0, y: 0, width: Double(SettingsModel.model.width), height: Double(SettingsModel.model.height))

    // depth pass descriptor
    let renderPassDescriptor = MTLRenderPassDescriptor()

    let depthDescriptor: MTLTextureDescriptor = MTLTextureDescriptor.texture2DDescriptor(pixelFormat: MTLPixelFormat.depth32Float, width: Int(SettingsModel.model.width), height: Int(SettingsModel.model.height), mipmapped: false)
    let depthTex = scnView!.device!.makeTexture(descriptor: depthDescriptor)
    depthTex.label = …
Run Code Online (Sandbox Code Playgroud)

opengl-es ios scenekit metal

5
推荐指数
1
解决办法
2206
查看次数

标签 统计

ios ×1

metal ×1

opengl-es ×1

scenekit ×1