본문 바로가기

분류 전체보기15

[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.
[프로그래머스] (Swift) 순위 문제 보러가기 문제 읽기 n 명의 권투선수들이 1대1로 대결한다. a가 b보다 순위가 높다면 a는 b를 항상 이긴다. 경기 결과에는 모순이 없다. a가 b를 이기고 b가 c를 이겼는데 c가 a를 이기는 결과는 없다. 경기 결과를 몇 개 잃어버려서, 전체 순위를 정확하게 매길 수 없다. 주어진 결과만을 가지고 순위를 확정할 수 있는 선수의 수를 구하자. 생각하기 처음에 생각했던 방법은 다음과 같다. 이차원 배열에 각 선수별로 가능한 등수 [1…n] 저장해두기 다른 이차원 배열에 결과 저장하면서 이겼다면 가능한 등수를 뒤에서 빼고 졌다면 앞에서 빼기 가능한 등수가 하나 남은 선수 확정짓기 그 선수와 관련된 선수들의 가능한 등수 정리하기 바꾸는 게 없을 때까지 3, 4번 과정을 반복하기 여기서 문제는 2번이었.. 2022. 11. 16.