본문 바로가기
Metal/Thirty Days of Metal (Warren Moore)

Day2. Buffers

by ARpple 2022. 11. 17.
 

Thirty Days of Metal — Day 2: Buffers

In the previous article we got acquainted with Metal and learned a little about devices.

medium.com

Data?

데이터는 추상적이다. 버퍼에 담기는 데이터에 대하여 이야기한다.

몇몇 그래픽 API는 drawLine이라는 함수로 선을 그린다. 이것의 작동 방식은 선의 시작점과 끝점이 있어 그 사이를 moveTo라는 숨겨진 메서드를 호출해 이동하는 것이다.

⇒ Core graphics는 이런 방식

하지만 Metal은 선의 끝 점들을 버퍼에 저장하고, GPU에게 버퍼에 데이터를 이용해 선을 그리라고 말해줘야 한다.

Buffer 만들기

let buffer = device.makeBuffer(length: 16, options: [])!

사용하는 기기의 device에서 버퍼를 만든다.

Argument Label의 length는 byte 단위의 공간을 생성하는 것이며 options는 추후에 다룬다.

Copying Data into a Buffer

버퍼를 만들었지만 비어있다. 이 비퍼에 데이터를 복사하는 작업을 해야 한다.

buffer.contents().bindMemory(to: SIMD2<Float>.self, capacity: 2)

버퍼에 2개의 메모리 방(capacity)을 만들었다. 그리고 각각의 방에 크기는 SIMD2 타입에서 사용하는 메모리 크기(to)이다.

코드

MetalCamp/Contents.swift at main · TaeYoon17/MetalCamp

'Metal > Thirty Days of Metal (Warren Moore)' 카테고리의 다른 글

Day6. Pipelines + CommandEncoder  (0) 2023.07.21
Day5. Shaders  (0) 2022.12.04
Day4. MTKView  (0) 2022.12.04
Day1. Devices  (0) 2022.11.17
Day3. Commands  (0) 2022.11.17

댓글