MTLTexture

Horus-iOS·2022년 7월 7일
0

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

A resource that holds formatted image data.

포맷화된 이미지 데이터를 갖고 있는 리소스입니다.

Declaration

protocol MTLTexture

Overview

이 프로토콜을 직접 구현하지 않아야 합니다. 대신 MTLTexture 객체를 생성하려면 아래 메소드 중 한 가지를 사용해야 합니다.

  • 텍스처를 생성하려면 텍스처의 속성을 설명하기 위한 MTLTextureDescriptor 객체를 생성하고, MTLDevice프로토콜의 makeTexture(descriptor:) 메소드를 호출합니다.
  • 텍스처 데이터를 갖고 있는 기존 IOSurface를 사용하는 텍스처를 생성하려면 서피스에서 이미지 데이터를 설명하기 위한 MTLTextureDescriptor 객체를 생성하고, makeTexture(descriptor:iosurface:plane:) 메소드를 호출해야 합니다.
  • 다른 포맷인 것처럼 다른 텍스처의 데이터로 재해석하는 텍스처를 생성하려면 makeTextureView(pixelFormat:) 혹은 makeTextureView(pixelFormat:textureType:levels:slices:) 메소드를 텍스처 객체에 호출해야 합니다. 소스 텍스처의 픽셀 포맷과 호환 가능한 새로운 텍스처에 픽셀 포맷을 선택해줘야 합니다. 새로운 텍스처는 소스 텍스처와 같은 스토리지 할당을 공유합니다. 새로운 텍스처를 변경하면 소스 텍스처에도 반영이 되며, 반대의 경우도 성립합니다.
  • 픽셀 데이터를 가지고 있는 MTLBuffer 객체의 컨텐츠를 사용하는 텍스처를 생성하려면 텍스처의 속성을 설명하는 MTLTextureDescriptor 객체를 생성하고, makeTexture(descriptor:offset:bytesPerRow:) 메소드를 버퍼 객체에 호출해야 합니다. 새로운 텍스처 객체는 소스 버퍼 객체와 스토리지 할당을 공유합니다. 텍스처에 변경사항이 발생하면 다른 한 쪽도 반영됩니다.

MTLTexture 객체를 생성한 후 크기, 타입, 픽셀 포맷과 같은 대부분의 특징은 모두 수정 불가능하고 변경될 수 없습니다. 텍스처의 픽셀 데이터만 수정 가능합니다.

시스템 메모리로부터 텍스처에 픽셀 데이터를 복사하려면 replace(region:mipmapLevel:slice:withBytes:bytesPerRow:bytesPerImage:) 혹은 replace(region:mipmapLevel:withBytes:bytesPerRow:) 메소드를 호출하시기 바랍니다.

픽셀 데이터를 시스템 메모리로 복사하려면 getBytes(_:bytesPerRow:bytesPerImage:from:mipmapLevel:slice:) 혹은 getBytes(_:bytesPerRow:from:mipmapLevel:) 메소드를 호출하시기 바랍니다.

0개의 댓글