iOS/라이브러리

[Library, Metal] MetalView 그리기

검은참깨두유vm 2023. 2. 3. 10:16
반응형

 

iOS 16.1, Xcode 14.1, Swift 5, Playground macOS 환경에서 진행했습니다.

 

MetalKit에서 제공하는 MTKView는 NSView 또는 UIView를 상속하며, 

MTKView는 메탈에 관련된 기능들을 사용할 수 있게 합니다.

MTKView를 사용하기 위해서 먼저 Device를 등록해주어야합니다.

 

import PlaygroundSupport
import MetalKit

let view = MTKView(frame: frame, device: device)
view.clearColor = MTLClearColor(red: 1, green: 1, blue: 0.8, alpha: 1)

guard let device = MTLCreateSystemDefaultDevice() else {
    fatalError("GPU is not supported")
}

 

GPU로 보내는 명령들로 프레임이 구성되어있습니다. 

그 명령은 commandEncoder로 구성되어있고, 

commandEncoder는 commandBuffer를 구성하고,

commandBuffer는 commandQueue로 구성되어 있습니다.

(CommandQueue > CommandBuffer > CommandEncoder)

 

guard let commandQueue = device.makeCommandQueue() else {
    fatalError("Could not create a command queue")
}

let commandBuffer = commandQueue.makeCommandBuffer()
let commandEncoder = commandBuffer?.makeRenderCommandEncoder(descriptor: view.currentRenderPassDescriptor!)

 

마지막 명령어를 저장하고 화면에 표출하는 코드는 아래에 있습니다.

 

commandEncoder?.endEncoding()
commandBuffer?.presetn(view.currentDrawable!)
commandBuffer?.commit()

PlaygroundPage.current.liveView = view

 

 

 

반응형