CAMetalLayer
Соответствует
-
AnyObject
-
CAMediaTiming
-
CVarArgType
-
Сопоставимый
-
Hashable
-
NSCoding
-
NSObjectProtocol
-
Печатаемый
-
CAMediaTiming
-
NSCoding
-
NSObject
Оператор импорта
Swift
import QuartzCore
Objective C
@import QuartzCore;
Доступность
Доступный в iOS 8.0 и позже.
A CAMetalLayer
объект является Базовым Слоем анимации, управляющим пулом Металлических текстур для рендеринга довольного Металл использования. Для использования Металла для рендеринга в приложении используйте этот класс в качестве отступающего уровня для представления путем возврата его из представления layerClass
метод класса. Для рендеринга содержания уровня используйте nextDrawable
метод для получения текстуры затем используйте его в качестве цели рендеринга в Металлическом конвейере рендеринга. После рендеринга каждого кадра Вы представляете новое содержание для дисплея с presentDrawable:
или presentDrawable:atTime:
метод буфера команд Вы использовали для рендеринга.
-
device
СвойствоМеталлическое устройство, ответственное за drawable ресурсы уровня.
Объявление
Swift
var device: MTLDevice!
Objective C
@property(readwrite, retain) id< MTLDevice > device
Обсуждение
Это свойство определяет, который Металл устройства использует для создания
MTLTexture
объекты Вы используете для рендеринга содержания уровня.Значение по умолчанию
nil
— необходимо установить устройство для уровня перед рендерингом.Оператор импорта
Objective C
@import QuartzCore;
Swift
import QuartzCore
Доступность
Доступный в iOS 8.0 и позже.
-
pixelFormat
СвойствоФормат пиксельных данных текстур для рендеринга содержания уровня.
Объявление
Swift
var pixelFormat: MTLPixelFormat
Objective C
@property(readwrite) MTLPixelFormat pixelFormat
Обсуждение
Формат пикселя для Слоя металла должен быть также
MTLPixelFormatBGRA8Unorm
(значение по умолчанию) илиMTLPixelFormatBGRA8Unorm_sRGB
.Оператор импорта
Objective C
@import QuartzCore;
Swift
import QuartzCore
Доступность
Доступный в iOS 8.0 и позже.
-
framebufferOnly
СвойствоБулево значение, определяющее, ограничиваются ли текстуры уровня для использования в качестве присоединений кадрового буфера.
Объявление
Swift
var framebufferOnly: Bool
Objective C
@property(readwrite) BOOL framebufferOnly
Обсуждение
Если значение
YES
true
(значение по умолчанию), класс CAMetalLayer может выделить свои объекты MTLTexture способами, оптимизированными в целях дисплея. Однако эта опция делает те текстуры неподходящими для выборки и пиксельных операций чтения-записи. Для поддержки выборки и пиксельных операций чтения-записи на текстурах уровня (по стоимости для производительности) установите это значение вNO
false
.Оператор импорта
Objective C
@import QuartzCore;
Swift
import QuartzCore
Доступность
Доступный в iOS 8.0 и позже.
-
drawableSize
СвойствоРазмер, в пикселях, текстур для рендеринга содержания уровня.
Обсуждение
По умолчанию уровень продает текстуры, измеренные для соответствия его содержания — т.е. значение этого свойства является уровнем
bounds
размер, умноженный наcontentsScale
фактор.Оператор импорта
Objective C
@import QuartzCore;
Swift
import QuartzCore
Доступность
Доступный в iOS 8.0 и позже.
-
Возвращает drawable объект для рендеринга содержания уровня.
Объявление
Swift
func nextDrawable() -> CAMetalDrawable!
Objective C
- (id<CAMetalDrawable>)nextDrawable
Возвращаемое значение
drawable объект. Используйте drawable’s
texture
свойство для конфигурирования aMTLRenderPipelineColorAttachmentDescriptor
объект для рендеринга к содержанию уровня.Обсуждение
A
CAMetalLayer
объект поддерживает внутренний пул текстур для отображения содержания уровня, каждый обернутый в aCAMetalDrawable
объект. Используйте этот метод для получения следующей доступной текстуры от пула. Затем, используйте aMTLRenderCommandEncoder
возразите, чтобы представить в текстуре, затем представить ее для дисплея (обычно сpresentDrawable:
метод буфера команд). В то время как одно drawable представляется, можно вызватьnextDrawable
метод снова, чтобы начать представлять другому. После представления другого drawable, заменяя последнего представленного, уровень может сохранить замененный базовый drawable’sMTLTexture
объект для повторного использования.Вызов этого метода блокирует текущий поток ЦП, пока новый drawable объект не доступен. Существует только маленький набор drawable ресурсов, таким образом, долгое время кадра GPU могло временно исчерпать те ресурсы, вынудив этот вызов блокировать, пока рендеринг GPU не завершен. Для лучших результатов запланируйте Ваш
nextDrawable
вызовите уже в возможном относительно другой работы CPU на кадр.Этот метод возвраты
nil
если уровеньpixelFormat
или другие свойства недопустимы.Оператор импорта
Objective C
@import QuartzCore;
Swift
import QuartzCore
Доступность
Доступный в iOS 8.0 и позже.
-
presentsWithTransaction
СвойствоБулево значение, определяющее, представляет ли уровень свое содержание с помощью Базовой транзакции Анимации.
Объявление
Swift
var presentsWithTransaction: Bool
Objective C
@property(getter=presentsWithTransaction) BOOL presentsWithTransaction
Обсуждение
Если это значение
NO
false
(значение по умолчанию), Вы выводите на экран вывод передачи рендеринга асинхронно сpresentDrawable:
илиpresentDrawable:atTime:
метод буфера команд Вы использовали для рендеринга.Если это значение
YES
true
, уровень выводит на экран свое drawable содержание синхронно, с помощью то, какой бы ни Базовая транзакция Анимации является текущей в это время drawable’spresent
метод вызывают. Когда вызвать, Однако, если Вы позволяете Металлу выбиратьpresent
метод (при помощиpresentDrawable:
метод буфера команд), транзакция, во время которой Вы запланировали представление, могла бы закончиться, прежде чем drawable готово быть представленным. Для предотвращения этой ситуации фиксируйте буфер команд и вызовитеwaitUntilScheduled
метод для синхронного ожидания до drawable готов, затем вызовите drawable’spresent
метод непосредственно.Оператор импорта
Objective C
@import QuartzCore;
Swift
import QuartzCore
Доступность
Доступный в iOS 8.0 и позже.