MTLCommandQueue
Наследование
Не применимый
Оператор импорта
Swift
import Metal
Objective C
@import Metal;
Доступность
Доступный в iOS 8.0 и позже.
MTLCommandQueue
протокол определяет интерфейс для объекта, который может поставить упорядоченный список в очередь буферов команд для Металлического устройства для выполнения. В целом очереди команды ориентированы на многопотоковое исполнение и позволяют многократным выдающимся буферам команд быть закодированными одновременно.
Ваше приложение не определяет классы, реализующие этот протокол. Для создания очереди команды вызовите newCommandQueue
или newCommandQueueWithMaxCommandBufferCount:
метод a MTLDevice
объект. Очередь, возвращенная newCommandQueueWithMaxCommandBufferCount:
метод ограничивает число незаконченных буферов команд. Как правило, Вы создаете одну или более очередей команды, когда Ваше приложение инициализируется, и затем имейте в наличии те очереди всюду по времени жизни Вашего приложения.
Для фактического выполнения рендеринга используйте очередь команды для создания одного или более объектов буфера команд, затем закодируйте команды в те объекты и передайте их очереди. Существует два метода для создания MTLCommandBuffer
объекты: commandBuffer
и commandBufferWithUnretainedReferences
. В большинстве случаев Вы используете commandBuffer
метод, потому что это создает буфер команд, содержащий сильную ссылку к любым объектам, которые необходимы, чтобы закончить выполнять команды, закодированные в буфере команд. В очень редких ситуациях Вы используете commandBufferWithUnretainedReferences
метод для создания буфера команд, не сохраняющего сильные ссылки к этим объектам. В этом случае Вы ответственны за поддержание этих объектов, пока команды, закодированные в буфере команд, не закончили выполняться.
-
commandBuffer () - commandBuffer
ТребуемыйСоздает буфер команд. (требуемый)
Объявление
Swift
func commandBuffer() -> MTLCommandBuffer!
Objective C
- (id<MTLCommandBuffer>)commandBuffer
Возвращаемое значение
Объект буфера команд.
Обсуждение
Этот метод возвращает буфер команд, следующий нормальным соглашениям управления памятью и, как гарантирующий, будет содержать сильные ссылки к объектам (таким как буферы, текстуры, сэмплеры и объекты состояния), на которые ссылаются любые кодеры команды, создаваемые из этого буфера команд. Эти ссылки сохранены, пока выполнение команды не завершается.
Этот метод устанавливает
retainedReferences
свойство возвращенного буфера команд кYES
true
.Если очередь команды инстанцировали с максимальным количеством буферов команд, и приложение уже имеет это много буферов, ожидающих, чтобы быть выполненным, то этот метод блокирует, пока один из тех буферов не становится доступным.
Оператор импорта
Objective C
@import Metal;
Swift
import Metal
Доступность
Доступный в iOS 8.0 и позже.
См. также
-
Создает буфер команд, не содержащий сильные ссылки ни к каким объектам (таким как буферы, текстуры, сэмплеры, и утверждающий объекты), ссылаемый кодерами команды, создающимися из этого буфера команд. (требуемый)
Объявление
Swift
func commandBufferWithUnretainedReferences() -> MTLCommandBuffer
Objective C
- (id<MTLCommandBuffer>)commandBufferWithUnretainedReferences
Возвращаемое значение
Объект буфера команд, не содержащий ссылку ни на какие объекты.
Обсуждение
Используйте этот метод только в чрезвычайно важных приложениях производительности, где стоимость поддержания ссылок на объекты является значительной, и ссылки некоторой другой частью приложения могут быть гарантированы, пока объект больше не необходим для выполнения команды. Если объект больше не будет иметь ссылок, но будет все еще необходим, то объект будет преждевременно выпущен, и результаты выполнения буфера команд не определены.
В большинстве случаев используйте
commandBuffer
метод вместоcommandBufferWithUnretainedReferences
.Этот метод устанавливает
retainedReferences
свойство возвращенного буфера команд кNO
false
.Оператор импорта
Objective C
@import Metal;
Swift
import Metal
Доступность
Доступный в iOS 8.0 и позже.
См. также
-
Сообщите XCode о том, когда получение отладки запустится и остановится. (требуемый)
Объявление
Swift
func insertDebugCaptureBoundary()
Objective C
- (void)insertDebugCaptureBoundary
Обсуждение
Когда отладка включена,
insertDebugCaptureBoundary
сообщает XCode о том, когда выполнить получение кадра.presentDrawable:
иpresentDrawable:atTime:
методыMTLCommandBuffer
так же сообщите XCode о получении кадра, так вызовinsertDebugCaptureBoundary
только если не присутствуют те методы.Оператор импорта
Objective C
@import Metal;
Swift
import Metal
Доступность
Доступный в iOS 8.0 и позже.
-
device
СвойствоУстройство, из которого создавалась эта очередь команды. (требуемый) (только для чтения)
Объявление
Swift
var device: MTLDevice { get }
Objective C
@property(readonly) id< MTLDevice > device
Обсуждение
Эта очередь команды может только использоваться с этим устройством.
Оператор импорта
Objective C
@import Metal;
Swift
import Metal
Доступность
Доступный в iOS 8.0 и позже.
-
Строка раньше идентифицировала очередь команды. (требуемый)
Обсуждение
Когда очередь команды просматривается в отладчике XCode, эта строка используется для маркировки объекта.
Оператор импорта
Objective C
@import Metal;
Swift
import Metal
Доступность
Доступный в iOS 8.0 и позже.