Why can't I join discord? Did I do something wrong?

I was trying to join discord so that I can ask why is my Chapter1 playground not working.


**import** MetalKit

**guard** **let** device = MTLCreateSystemDefaultDevice() **else** {

fatalError("GPU is not supported")

}

**let** frame = CGRect(x: 0, y: 0, width: 600, height: 600)

**let** view = MTKView(frame: frame, device: device)

view.clearColor = MTLClearColor(red: 1, green: 1, blue: 0.8, alpha: 1)

//1

**let** allocator = MTKMeshBufferAllocator(device: device)

//2

**let** mdlMesh = MDLMesh(

sphereWithExtent: [0.75, 0.75, 0.75],

segments: [100, 100],

inwardNormals: **false**,

geometryType: .triangles,

allocator: allocator

)

//3

**let** mesh = **try** MTKMesh(mesh: mdlMesh, device: device)

**guard** **let** commandQueue = device.makeCommandQueue() **else** {

fatalError("Could not create a command queue")

}

**let** shader = """

#include <metal_stdlib>

using namespace metal;

struct VertexIn {

float4 position [[attribute(0)]];

};

vertex float4 vertex_main(const VertexIn vertex_in [[stage_in]]) {

return vertex_in.position;

}

fragment float4 fragment_main() {

return float4(1, 0, 0, 1);

}

"""

**let** library = **try** device.makeLibrary(source: shader, options: **nil**)

**let** vertexFunction = library.makeFunction(name: "vertex_main")

**let** fragmentFunction = library.makeFunction(name: "fragment_main")

**let** pipelineDescriptor = MTLRenderPipelineDescriptor()

pipelineDescriptor.colorAttachments[0].pixelFormat = .bgra8Unorm

pipelineDescriptor.vertexFunction = vertexFunction

pipelineDescriptor.fragmentFunction = fragmentFunction

pipelineDescriptor.vertexDescriptor = MTKMetalVertexDescriptorFromModelIO(mesh.vertexDescriptor)

**let** pipelineState = **try** device.makeRenderPipelineState(descriptor: pipelineDescriptor)

//1

**guard** **let** commandBuffer = commandQueue.makeCommandBuffer(),

// 2

**let** renderPassDescriptor = view.currentRenderPassDescriptor,

// 3

**let** renderEncoder = commandBuffer.makeRenderCommandEncoder(descriptor: renderPassDescriptor)

**else** { fatalError() }

renderEncoder.setRenderPipelineState(pipelineState)

renderEncoder.setVertexBuffer(mesh.vertexBuffers[0].buffer, offset: 0, index: 0)

**guard** **let** submesh = mesh.submeshes.first **else** {

fatalError()

}

renderEncoder.drawIndexedPrimitives(type: .triangle, indexCount: submesh.indexCount, indexType: submesh.indexType, indexBuffer: submesh.indexBuffer.buffer, indexBufferOffset: 0)

// 1

renderEncoder.endEncoding()

// 2

**guard** **let** drawable = view.currentDrawable **else** {

fatalError()

}

//3

commandBuffer.present(drawable)

commandBuffer.commit()

PlaygroundPage.current.liveView = view```

That’s probably an old invite, try this one: Kodeco Chat