Mac에서 Swift를 사용하여 Metal 초기화
■ Step1: 프로젝트 제작
프로젝트를 만들면.

의 화면이 나타나므로 "Applocation"은 "Cocoa App"을 선택하고 "Next"를 누르십시오.

다음은 Product Name, 이번에는 Test01 입니다.
언어 설정 언어를 변환으로 설정하십시오.
그리고 "Storyboards 사용"체크도 잊지 마세요.
"Next"를 눌러 디렉토리를 지정하고 "Create"를 눌러 항목을 작성합니다.

이런 화면이 나온다.
■ Step2: MetalRender 클래스 만들기
프로젝트에 MetalRender.swift 추가

MetalRenderer.swift
import MetalKit
let maxBuffersInFlight = 3
class MetalRenderer: NSObject, MTKViewDelegate {
let _device: MTLDevice
let _command_queue: MTLCommandQueue
let _in_flight_semaphore = DispatchSemaphore(value: maxBuffersInFlight)
init?(metalKitView: MTKView) {
_device = metalKitView.device!
guard let queue = _device.makeCommandQueue() else { return nil }
_command_queue = queue
metalKitView.colorPixelFormat = MTLPixelFormat.bgra8Unorm;
super.init()
}
func draw(in view: MTKView) {
_ = _in_flight_semaphore.wait(timeout: DispatchTime.distantFuture)
if let command_buffer = _command_queue.makeCommandBuffer() {
let semaphore = _in_flight_semaphore
command_buffer.addCompletedHandler { (_ command_buffer)-> Swift.Void in
semaphore.signal()
}
let render_pass_descriptor = view.currentRenderPassDescriptor
render_pass_descriptor?.colorAttachments[0].loadAction=MTLLoadAction.clear
render_pass_descriptor?.colorAttachments[0].storeAction=MTLStoreAction.store
render_pass_descriptor?.colorAttachments[0].clearColor=MTLClearColorMake(1.0, 0.0, 0.0, 1.0)
if let render_pass_descriptor = render_pass_descriptor, let render_encoder = command_buffer.makeRenderCommandEncoder(descriptor: render_pass_descriptor) {
render_encoder.endEncoding()
if let drawable = view.currentDrawable {
command_buffer.present(drawable)
}
}
command_buffer.commit()
}
}
func mtkView(_ view: MTKView, drawableSizeWillChange size: CGSize) {
}
}
■Step3:ViewController.swift 편집
ViewController.swift
import Cocoa
import MetalKit
class ViewController: NSViewController {
var renderer: MetalRenderer!
var mtkView: MTKView!
override func viewDidLoad() {
super.viewDidLoad()
guard let mtkView = self.view as? MTKView else {
print("View attached to GameViewController is not an MTKView")
return
}
// Select the device to render with. We choose the default device
guard let defaultDevice = MTLCreateSystemDefaultDevice() else {
print("Metal is not supported on this device")
return
}
mtkView.device = defaultDevice
guard let newRenderer = MetalRenderer(metalKitView: mtkView) else {
print("Renderer cannot be initialized")
return
}
renderer = newRenderer
renderer.mtkView(mtkView, drawableSizeWillChange: mtkView.drawableSize)
mtkView.delegate = renderer
}
}
■ Step4: View 설정

ain.storyboad에서 View 를 선택합니다.
그리고 오른쪽에 Class를 설정한 곳이 나타나므로 MTKView를 지정하십시오.
■ Step5: 실행
빨간색 화면 나와요.

Reference
이 문제에 관하여(Mac에서 Swift를 사용하여 Metal 초기화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sanoh/items/39f26a9a8e519cc61f00텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)