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)이다.
코드
'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 |
댓글