MTLBuffer

Horus-iOS·2022년 7월 7일
0

https://developer.apple.com/documentation/metal/mtlbuffer

A resource that stores data in a format defined by your app.

앱에서 정의하고 있는 포맷으로 데이터를 저장하고 있는 리소스입니다.

Declaration

protocol MTLBuffer

Overview

MTLBuffer 객체는 생성된 MTLDevice로만 함께 사용될 수 있습니다. 이 프로토콜을 직접 구현하지 않아야 합니다. 대신 MTLBuffer 객체를 생성하려면 아래에 있는 MTLDevice 메소드를 사용하시기 바랍니다.

  • makeBuffer(length:options:)는 새로운 스토리지 할당과 함께 MTLBuffer 객체를 생성합니다.
  • makeBuffer(bytes:length:options:)는 기존 스토리지 할당에서 새로운 할동으로 데이터를 복사해서 MTLBuffer 객체를 생성합니다.
  • makeBuffer(bytesNoCopy:length:options:deallocator:)는 기존 스토리지 할당을 재사용하고 새로운 스토리지 할당을 하지 않으면서 MTLBuffer를 생성합니다.

메탈 프레임워크는 MTLBuffer에 대한 어떠한 컨텐츠에 대해서도 알지 못하며 크기만 알고 있습니다. 버퍼에서 데이터의 포맷을 정의해야 하며, 앱과 셰이더가 데이터를 어떻게 읽고 쓰는지를 보장해줘야 합니다. 예를 들어 저장하려고 하는 버퍼 및 메모리 레이아웃에, 저장하려는 데이터 정의가 담긴 구조체를 셰이더에 생성할 수 있습니다.

관리되는 리소스 스토리지 모드(MTLStorageMode.managed)와 함께 버퍼를 생성하길 원한다면, 메탈이 모든 변경사항을 GPU로 복사하도록 didModifyRange(_:)를 호출해서 메탈에게 알려줘야 합니다.

0개의 댓글