MTLBuffer
Наследование
Не применимый
Оператор импорта
Swift
import Metal
Objective C
@import Metal;
Доступность
Доступный в iOS 8.0 и позже.
MTLBuffer протокол определяет интерфейс для объектов, представляющих выделение бесформатной, доступной для устройства памяти, которая может содержать любой тип данных. Ваше приложение не определяет классы, реализующие этот протокол.
Не создавайте a MTLBuffer объект при помощи стандартного выделения или методов инициализации. Вместо этого используйте следующий MTLDevice методы для создания MTLBuffer объекты:
newBufferWithLength:options:создает aMTLBufferобъект с новым выделением ресурсов хранения.newBufferWithBytes:length:options:создает aMTLBufferобъект путем копирования данных с существующего выделения ресурсов хранения в новое выделение.newBufferWithBytesNoCopy:length:options:deallocator:создает aMTLBufferвозразите, что повторные использования существующее выделение ресурсов хранения и не выделяют нового хранения.
-
newTextureWithDescriptor (_: offset:bytesPerRow:) - newTextureWithDescriptor:offset:bytesPerRow:ТребуемыйСоздает новое
MTLTextureвозразите, что использует данные вMTLBufferвозразите как его данные изображения текстуры. (требуемый)Объявление
Swift
func newTextureWithDescriptor(_descriptor: MTLTextureDescriptor, offsetoffset: Int, bytesPerRowbytesPerRow: Int) -> MTLTexture?Objective C
- (id<MTLTexture>)newTextureWithDescriptor:(MTLTextureDescriptor *)descriptoroffset:(NSUInteger)offsetbytesPerRow:(NSUInteger)bytesPerRowПараметры
descriptorУказатель на объект дескриптора текстуры, содержащий свойства созданной текстуры.
offsetСмещение от базового адреса для первой строки данных текстуры, в байтах.
bytesPerRowШаг от одной строки текстуры отображает к следующему в байтах.
Возвращаемое значение
Объект текстуры с данными изображения, совместно использующимися с инициирующим буфером.
Обсуждение
Новое
MTLTextureобъект и возникновениеMTLBufferвозразите совместно используют то же выделение ресурсов хранения.bytesPerRowиoffsetопределите, как интерпретироватьMTLBufferвыделение ресурсов хранения как 2D текстура.Этот метод имеет следующие ограничения:
Тип текстуры должен быть
MTLTextureType2D.mipmapLevelCountдолжен быть 1.offsetдолжно быть кратное число 64.bytesPerRowдолжно быть кратное число 64.bytesPerRowдолжно также быть больше, чем или равным размеру одного пикселя, в байтах, умноженных на пиксельную ширину одной строки.Поддерживаются обычные и упакованные цветные форматы пикселя.
MTLPixelFormatGBGR422иMTLPixelFormatBGRG422поддерживаются цветные форматы пикселя. Сжатые цветные форматы пикселя не поддерживаются.Ни глубина, ни форматы шаблона не поддерживаются.
Используя этот метод для совместного использования хранения между текстурой и буфером может предотвратить приложение определенной оптимизации текстурирования (например, пиксель swizzling и мозаичное размещение).
Оператор импорта
Objective C
@import Metal;Swift
import MetalДоступность
Доступный в iOS 8.0 и позже.
-
содержание () - содержаниеТребуемыйВозвращается система адресуют выделение ресурсов хранения буфера. (требуемый)
Объявление
Swift
func contents() -> UnsafeMutablePointer<Void>Objective C
- (void *)contentsВозвращаемое значение
Указатель на совместно используемую копию буферных данных.
Оператор импорта
Objective C
@import Metal;Swift
import MetalДоступность
Доступный в iOS 8.0 и позже.
-
lengthСвойствоЛогический размер буфера, в байтах. (требуемый) (только для чтения)
Обсуждение
Выделенный размер может быть больше, чем логический размер вследствие требований выравнивания.
Оператор импорта
Objective C
@import Metal;Swift
import MetalДоступность
Доступный в iOS 8.0 и позже.
