반응형

METAL 5

[iOS, Metal] Metal에서 Image를 MTKView에 올리는 방법

이 글에서는 Metal에서 이미지를 MTKView에 올리는 방법에 대해 알아보겠습니다. 1. 이미지 로드하기 Metal에서 이미지를 사용하기 위해서는 이미지를 로드해야 합니다. guard let image = UIImage(named: "{이미지 파일 이름}") else { fatalError("이미지를 로드하는 데 실패했습니다.") } 2. Texture 생성하기 이미지를 로드했다면, 이제 해당 이미지를 Metal에서 사용할 수 있는 Texture로 변환해야 합니다. guard let texture = try? MTLTextureLoader(device: device).newTexture(cgImage: image.cgImage!, options: nil) else { fatalError("Textur..

iOS/라이브러리 2023.03.21

[Library, Metal] vertex를 index로 메모리 절약하기

iOS 16.1, Xcode 14.1, Swift 5, Playground 환경에서 진행했습니다. 기존에 삼각형을 그리려면 변수를 저장하여야하는데, 수많은 삼각형을 그리게 되면, 겹치는 꼭지점이 무수히 많아 메모리가 낭비될 것입니다. 그리하여 겹치는 부분은 제거하고 같은 꼭지점은 index로 접근하는 방법이 있습니다. let vertices: [Float] = [ -1, 1, 0, -1, -1, 0, 1, -1, 0, 1, 1, 0 ] let indices: [UInt16] = [ 0, 1, 2, 2, 3, 0 ] indices에서 첫번째 줄 0, 1, 2는 vertices[0], vertices[1], vertice[2]의 지점을 사용한다는 의미입니다. indices 두번째 줄 2, 3, 0은 vert..

iOS/라이브러리 2023.02.03

[Library, Metal] 삼각형 그리기 (pipeline)

iOS 16.1, Xcode 14.1, Swift 5, Playground 환경에서 진행했습니다. 삼각형의 좌표를 저장하는 [Float] 배열을 만들고, 삼각형의 좌표를 구성하는 Buffer를 생성합니다. let vertices: [Float] = [ 0, 1, 0, -1, -1, 0, 1, -1, 0 ] let vertexBuffer = device.makeBuffer(bytes: vertices, length: vertices.count * MemoryLayout.size) Shader Function은 GPU를 돌리기 위한 작은 프로그램입니다. Shader Function을 작성하기 위하여 Metal Shading Laungage(MSL)을 사용해야합니다. MSL은 C++로 구성되어 있습니다. .m..

iOS/라이브러리 2023.02.03

[Library, Metal] MetalView 그리기

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() e..

iOS/라이브러리 2023.02.03
반응형