본문 바로가기

🍎3

[Thirty Days of Metal] Day3-Commands 원문: Thirty Days of Metal-Day 3: Commands 위 글을 공부하고 요약했습니다. device를 만들고 GPU 메모리를 할당하는 것도 중요하지만, GPU에게 일을 시키려면 그것의 언어를 배워야 한다. 명령하는 법을 배워보자. What are Commands? Metal에는 데이터를 제공하고 모양을 그려내는 걸 동시에 하는 함수가 없고 둘은 구분된 동작이다. 두 점을 가진 버퍼가 있고 선 하나를 그린다고 해보자. 먼저 Metal에게 어떤 버퍼가 선 데이터를 가질지 알려준다. 그 후 선을 그리라고 해야 한다. 수도코드로 다음과 같다. commandList.setBuffer(pointBuffer) commandList.drawLines(1) 실제 코드는 아니지만 매우 일반적인 패턴이다... 2023. 1. 1.
[Thirty Days of Metal] Day2-Buffers 원문: Thirty Days of Metal-Day 2: Buffers 위 글을 공부하고 요약했습니다. 버퍼는 그래픽 프로그래밍에서 필수적이다. GPU가 작동하는 데이터를 가지고 있기 때문이다. Data Metal에서 선을 그리려면 버퍼에 선의 정점을 저장하고 해당 버퍼 안에 데이터를 기반으로 선을 그리도록 GPU에게 명령해야 한다. Creating a Buffer device의 makeBuffer(length:options:) 메서드를 사용해 버퍼를 만든다. let buffer = device.makeBuffer(length: 16, options: [])! length: 바이트 단위로 버퍼 메모리의 크기 option: 버퍼를 만들 때 조절할 수 있는 것들. 여기서는 비워둔다. Copying Data .. 2022. 12. 31.
[Thirty Days of Metal] Day1-Devices 원문: Thirty Days of Metal—Day 1: Devices 위 글을 공부하고 요약했습니다. Metal 그래픽 프레임워크. GPU를 프로그래밍할 수 있게 해준다. 다른 그래픽 프레임워크들과 다르게 더 저수준의 이해가 필요. Devices device는 아이폰이나 맥 안에 GPU의 추상적인 개념이다. MTLDevice 프로토콜을 따르는 객체이고 GPU 리소스를 할당하기 위한 메서드를 포함한다. Getting a Device 가장 먼저 Metal 프레임워크를 import 해 컴파일러가 Metal의 타입과 함수를 찾을 수 있게 한다. import Metal MTLCreateSystemDefaultDevice() 함수로 default device를 얻을 수 있다. 시스템이 Metal을 지원하지 않으면.. 2022. 12. 31.