             return
         }
         
-        setupRenderPassDescriptor(drawable)
-        self.metalViewDelegate?.renderObjects(drawable, renderPassDescriptor: renderPassDescriptor!, commandBuffer: cmdBuffer)
+        //N.B. the app does not necessarily need to use currentRenderPassDescriptor
+        var renderPassDescriptor = setupRenderPassDescriptor(drawable, renderPassDescriptor: currentRenderPassDescriptor!)
+        self.renderDelegate?.renderObjects(drawable, renderPassDescriptor: renderPassDescriptor, commandBuffer: cmdBuffer)
         
         cmdBuffer.presentDrawable(drawable)
         cmdBuffer.commit()

    override func drawRect(dirtyRect: CGRect) {
        lastFrameStart = thisFrameStart
        thisFrameStart = CFAbsoluteTimeGetCurrent()
        self.metalViewDelegate?.updateLogic(CFTimeInterval(thisFrameStart - lastFrameStart))
        
        autoreleasepool { () -> () in
            self.render()

    }
    
    func render() {
        inflightResources.wait()
        let cmdBuffer = commandQueue.commandBuffer()
        
        cmdBuffer.addCompletedHandler { (cmdBuffer) in
            inflightResources.next()
        }
        
        guard let drawable = currentDrawable else
