Металлический командный буфер оптимален для размытия и отображения MTLTexture

У меня есть следующий код, который размывает MTLTexture, а затем отображает его в MTKView, однако, является ли порядок буфера команд оптимальным?

Blur - это Metal Performance Shader. Вычислительный шейдер просто пишет текстуру, это простой переход.

var t: MTLTexture? = mtlLayer.currentSceneDrawable?.texture


    let drawableTexture: MTLTexture? = metalView.currentDrawable!.texture

    let commandBuffer: MTLCommandBuffer = commandQueue.makeCommandBuffer()!


    blur.encode(commandBuffer: commandBuffer, inPlaceTexture: &t!, fallbackCopyAllocator: nil)

    let commandEncoder = commandBuffer.makeComputeCommandEncoder()!
    commandEncoder.setComputePipelineState(pipelineState)
    commandEncoder.setTexture(t, index: 0)
    commandEncoder.setTexture(drawableTexture, index: 1)
    commandEncoder.dispatchThreadgroups(threadgroupsPerGrid, threadsPerThreadgroup: threadsPerThreadgroup)
    commandEncoder.endEncoding()

    commandBuffer.present(metalView.currentDrawable!)
    metalView.draw()

    commandBuffer.commit();
    commandBuffer.waitUntilCompleted()

0 ответов

Другие вопросы по тегам