void Render ()
		{
			// Create a new command buffer for each renderpass to the current drawable.
			IMTLCommandBuffer commandBuffer = commandQueue.CommandBuffer ();

			// Initialize MetalPerformanceShaders gaussianBlur with Sigma = 10.0f.
			var gaussianblur = new MPSImageGaussianBlur (metalView.Device, 10f);

			var drawable = ((CAMetalLayer)metalView.Layer).NextDrawable ();

			// Run MetalPerformanceShader gaussianblur.
			gaussianblur.EncodeToCommandBuffer (commandBuffer, sourceTexture, drawable.Texture);

			// Schedule a present using the current drawable.
			commandBuffer.PresentDrawable (drawable);
			// Finalize command buffer.
			commandBuffer.Commit ();
			commandBuffer.WaitUntilCompleted ();

			// To reuse a CAMetalDrawable object’s texture, you must deallocate the drawable after presenting it.
			drawable.Dispose ();
		}
        void Render()
        {
            // Create a new command buffer for each renderpass to the current drawable.
            IMTLCommandBuffer commandBuffer = commandQueue.CommandBuffer();

            // Initialize MetalPerformanceShaders gaussianBlur with Sigma = 10.0f.
            var gaussianblur = new MPSImageGaussianBlur(metalView.Device, 10f);

            var drawable = ((CAMetalLayer)metalView.Layer).NextDrawable();

            // Run MetalPerformanceShader gaussianblur.
            gaussianblur.EncodeToCommandBuffer(commandBuffer, sourceTexture, drawable.Texture);

            // Schedule a present using the current drawable.
            commandBuffer.PresentDrawable(drawable);
            // Finalize command buffer.
            commandBuffer.Commit();
            commandBuffer.WaitUntilCompleted();

            // To reuse a CAMetalDrawable object’s texture, you must deallocate the drawable after presenting it.
            drawable.Dispose();
        }