Custom rendered drawing disappears...

Hi,


I am still trying to get continuously update tracinng line to work. (re: https://forums.developer.apple.com/thread/62727)


Using SCNSceneRednerDelegate, I successfully rendered a drawing using Metal API


But after a brief moment, the rendering is replaced by the objects from SceneKit.


Following is my rendering code:


    func renderer(renderer: SCNSceneRenderer, willRenderScene scene: SCNScene, atTime time: NSTimeInterval) {
   
        guard let vm = self.viewModel,
            let traceModel = vm.traceModel.value,
            let renderPipeState = traceModel.renderPipeLineState,
            let nextDrawable = (self.sceneKitView.layer as? CAMetalLayer)?.nextDrawable()
            else {
                return
        }
        let commandBuffer = traceModel.commandQueue.commandBuffer()
        let renderPassDescriptor = MTLRenderPassDescriptor()
        renderPassDescriptor.colorAttachments[0].texture = nextDrawable.texture
        renderPassDescriptor.colorAttachments[0].loadAction = .Clear
        renderPassDescriptor.colorAttachments[0].storeAction = .Store
        let encoder = commandBuffer.renderCommandEncoderWithDescriptor(renderPassDescriptor)
   
   
        encoder.setRenderPipelineState(renderPipeState)
        encoder.setVertexBuffer(traceModel.metalBuffer, offset: 0, atIndex: 0)
        encoder.drawPrimitives(.Triangle, vertexStart: 0, vertexCount: 3, instanceCount: 1)
        encoder.endEncoding()
   
        commandBuffer.presentDrawable(nextDrawable)
        commandBuffer.commit()
    }


Here's code snippet from 2012 WWDC Video (https://developer.apple.com/videos/play/wwdc2012/504/ ):



- (void)renderer:(id )aRenderer willRenderScene:(SCNScene *)scene atTime:(NSTimeInterval)time {

glBindVertexArrayAPPLE(myVAO);

glDisable(GL_DEPTH_TEST);

glUseProgram(myProgram);

CGSize size = self.myView.frame.size;

glUniform2f(myResolutionLoc, size.width, size.height);

glUniform1f(myTimeLoc, CFAbsoluteTimeGetCurrent());

glDrawArrays(GL_TRIANGLES, 0, 6);

glEnable(GL_DEPTH_TEST);

glBindVertexArrayAPPLE(0);

}


Is there something I'm missing?

Custom rendered drawing disappears...
 
 
Q