Spec-Zone .ru
спецификации, руководства, описания, API

Библиотека Разработчика iOS

Разработчик

Металлическая ссылка платформы ссылка на протокол MTLRenderCommandEncoder

Опции
Развертывание Target:

На этой странице
Язык:

MTLRenderCommandEncoder

Наследование


Не применимый

Оператор импорта


Swift

import Metal

Objective C

@import Metal;

Доступность


Доступный в iOS 8.0 и позже.

MTLRenderCommandEncoder протокол используется для определения интерфейса для объектов, кодирующих состояние рендеринга графики и команды в буфер команд. Ваше приложение не определяет классы, реализующие этот протокол.

Выполнять передачу рендеринга с кодером команды рендеринга:

  1. Создайте a MTLRenderCommandEncoder объект путем вызова renderCommandEncoderWithDescriptor: метод MTLCommandBuffer объект, в котором Вы хотите закодировать команды рендеринга. (Не используйте стандартное выделение и методы инициализации для создания a MTLRenderCommandEncoder объект.) Кодер команды рендеринга представляет единственную передачу рендеринга в определенное присоединение. Как правило, Вы создаете a MTLRenderPassAttachmentDescriptor возразите один раз, чтобы описать присоединение и затем использовать MTLRenderPassAttachmentDescriptor неоднократно для столького же рендеринга передает сколько место назначения для рендеринга команд.

  2. Вызовите setRenderPipelineState: метод для указания a MTLRenderPipelineState это определяет состояние конвейера рендеринга графики, включая функции программы построения теней. (Вы обычно создаете это MTLRenderPipelineState нечасто; например, когда инициализируется Ваше приложение. Когда Вы создаете a MTLRenderPipelineState, у Вас есть опция получить отражательные данные в MTLRenderPipelineReflection это показывает подробные данные вершины и функций фрагмента и их параметров.)

  3. Укажите ресурсы для ввода к и выведите от функций программы построения теней. Установите расположение (индекс) каждого ресурса в его соответствующей таблице параметра.

  4. Укажите дополнительное состояние стандартной функции, такое как область просмотра, разрежьте ножницами прямоугольник, тест глубины, и получите тестовые настройки с помощью шаблона.

  5. Нарисуйте графические примитивы.

  6. Вызовите endEncoding метод для завершения кодера команды рендеринга.

  • Указывает постоянный совмещенный цвет и альфа-значения. (требуемый)

    Объявление

    Swift

    func setBlendColorRed(_ red: Float, green green: Float, blue blue: Float, alpha alpha: Float)

    Objective C

    - (void)setBlendColorRed:(float)red green:(float)green blue:(float)blue alpha:(float)alpha

    Параметры

    red

    Постоянное красное значение смешения.

    green

    Постоянное зеленое значение смешения.

    blue

    Постоянное синее значение смешения.

    alpha

    Постоянная альфа смешивает значение.

    Обсуждение

    Постоянный совмещенный цвет и альфа-значения запрашивают все присоединения для этого кодера. Можно использовать red, green, и blue значения с MTLBlendFactorBlendColor и MTLBlendFactorOneMinusBlendColor факторы смешения. alpha значение может использоваться с MTLBlendFactorBlendAlpha и MTLBlendFactorOneMinusBlendAlpha факторы смешения.

    Значение по умолчанию (0, 0, 0, 0), который является MTLBlendFactorZero. Для других значений посмотрите MTLBlendFactor.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

  • setCullMode (_:) - setCullMode: Требуемый

    Средства управления, отобраны ли примитивы, когда переднее направление, обратная обточка, или не отобрал вообще. (требуемый)

    Объявление

    Swift

    func setCullMode(_ cullMode: MTLCullMode)

    Objective C

    - (void)setCullMode:(MTLCullMode)cullMode

    Параметры

    cullMode

    Какие примитивы отобраны, если таковые имеются.

    Обсуждение

    Отбор может использоваться для удаления невидимой поверхности на некоторых геометрических моделях, таких как ориентируемая сфера, представленная с заполненными треугольниками. (Поверхность является ориентируемой, если ее примитивы последовательно рисуются или в по часовой стрелке или в против часовой стрелки упорядочивают.)

    Значение по умолчанию MTLCullModeNone. Для других возможных значений посмотрите MTLCullMode.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

    См. также

    – setFrontFacingWinding:

  • Корректирует значения глубины от функций фрагмента масштабным коэффициентом и масштабирующимся смещением, фиксируя смещение к максимальной сумме. (требуемый)

    Объявление

    Swift

    func setDepthBias(_ depthBias: Float, slopeScale slopeScale: Float, clamp clamp: Float)

    Objective C

    - (void)setDepthBias:(float)depthBias slopeScale:(float)slopeScale clamp:(float)clamp

    Параметры

    depthBias

    Систематическая ошибка, применяющаяся ко всем фрагментам.

    slopeScale

    Смещение, масштабирующееся с градиентом глубины примитива.

    clamp

    Максимальное значение смещения для применения к фрагменту.

    Обсуждение

    Значения по умолчанию: depthBias = 0.0; slopeScale = 0.0; clamp = 0.0.

    Масштабируемое наклоном смещение используется, чтобы улучшить и подстроить схемы затенения и избежать теневых прыщей (неумышленное самозатенение) и другие артефакты глубины, вызывающиеся компланарными многоугольниками. Смещение применяется к растеризированной глубине и влияет и на тестирование глубины и значение глубины, записанное в буфер глубины. Значение Смещения вычисляется следующим образом:

    • Смещение = (плавание)depthBias * 2^ (exp (макс. abs (z) в примитиве) - r) + slopeScale * MaxSlope

    • где r является самым маленьким положительным представимым значением в буфере глубины, который является числом битов мантиссы в представлении с плавающей точкой (исключая скрытый бит); например, 23 для float32.

    • MaxSlope является самым большим наклоном значения глубины в пикселе.

    clamp применяется как минута или макс., в зависимости от ее знака. Если clamp > 0, затем Смещение = минута (clamp, Смещение). Если clamp <0, затем Смещение = макс. (clamp, Смещение). Если clamp нуль, он не применяется.

    Если также depthBias или slopeScale является ненулевым, тогда финал, вычисленное Смещение добавляется к значению глубины.

    Смещение только влияет на треугольные примитивы. Смещение глубины не применяется к точкам или строкам.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

  • Устанавливает глубину и тестовое состояние шаблона. (требуемый)

    Объявление

    Swift

    func setDepthStencilState(_ depthStencilState: MTLDepthStencilState)

    Objective C

    - (void)setDepthStencilState:(id<MTLDepthStencilState>)depthStencilState

    Параметры

    depthStencilState

    Объект, содержащий состояние шаблона и глубина.

    Обсуждение

    Глубина и состояния шаблона должны быть совместимы с текущей присоединяемой конфигурацией. Если тестирование глубины или запись глубины включены, MTLRenderPassDescriptor должен включать присоединение глубины. Если тестирование шаблона или запись шаблона включены, MTLRenderPassDescriptor должен включать присоединение шаблона.

    Состояние глубины/шаблона по умолчанию nil, таким образом, поведение определяется значениями по умолчанию для свойств MTLDepthStencilDescriptor.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

  • Устанавливает вьющийся порядок обращенных к передней стороне примитивов. (требуемый)

    Объявление

    Swift

    func setFrontFacingWinding(_ frontFacingWinding: MTLWinding)

    Objective C

    - (void)setFrontFacingWinding:(MTLWinding)frontFacingWinding

    Параметры

    frontFacingWinding

    Проветривание, по часовой стрелке или против часовой стрелки, который считается обращенным к передней стороне примитивом.

    Обсуждение

    Значение по умолчанию MTLWindingClockwise.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

    См. также

    – setCullMode:

  • Устанавливает текущий конвейерный объект состояния рендеринга. (требуемый)

    Объявление

    Swift

    func setRenderPipelineState(_ pipelineState: MTLRenderPipelineState)

    Objective C

    - (void)setRenderPipelineState:(id<MTLRenderPipelineState>)pipelineState

    Параметры

    pipelineState

    Объект, содержащий оцененную графику, представляющую конвейерное состояние, такое как программа построения теней, функционирует, видимость, смешение, и мультивыбирающий состояние.

    Обсуждение

    Необходимо установить конвейерное состояние рендеринга прежде, чем выпустить любые команды рисования.

    Конвейерное состояние рендеринга по умолчанию nil, таким образом, поведение определяется значением по умолчанию MTLRenderPipelineDescriptor.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

  • Указывает, что прямоугольник для фрагмента режет ножницами тест. Отбрасываются фрагменты, лежащие вне разрезать ножницами прямоугольника. (требуемый)

    Объявление

    Swift

    func setScissorRect(_ rect: MTLScissorRect)

    Objective C

    - (void)setScissorRect:(MTLScissorRect)rect

    Параметры

    rect

    Источник и размер разрезать ножницами прямоугольника.

    Обсуждение

    Разрезать ножницами прямоугольник должен лечь полностью в текущем присоединении.

    Значение по умолчанию (0, 0, ширина, высота), где ширина и высота являются размерностями x и y присоединения, соответственно.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

  • Устанавливает ссылочное значение шаблона для сравнительных испытаний шаблона. (требуемый)

    Объявление

    Swift

    func setStencilReferenceValue(_ ref: UInt32)

    Objective C

    - (void)setStencilReferenceValue:(uint32_t)ref

    Параметры

    ref

    Ссылочное значение шаблона.

    Обсуждение

    Тест шаблона использует ссылочное значение шаблона, как описано для MTLStencilDescriptor. Значение по умолчанию 0.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

  • Наборы, как растеризировать треугольник и треугольник, разделяют примитивы. (требуемый)

    Объявление

    Swift

    func setTriangleFillMode(_ fillMode: MTLTriangleFillMode)

    Objective C

    - (void)setTriangleFillMode:(MTLTriangleFillMode)fillMode

    Параметры

    fillMode

    Режим, определяющий, растеризировать ли треугольные и треугольные примитивы полосы как строки (MTLTriangleFillModeLines) или как заполненные треугольники (MTLTriangleFillModeFill).

    Обсуждение

    В MTLTriangleFillModeFill режим, растеризация рисует все пиксели, содержавшие в треугольнике. В MTLTriangleFillModeLines режим, растеризация проводит линии вокруг краев треугольников, и оставляет внутреннюю часть незаполненной.

    Значение по умолчанию MTLTriangleFillModeFill.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

  • setViewport (_:) - setViewport: Требуемый

    Устанавливает область просмотра, использующуюся для преобразования вершин от нормализованных координат устройства до координат окна. (требуемый)

    Объявление

    Swift

    func setViewport(_ viewport: MTLViewport)

    Objective C

    - (void)setViewport:(MTLViewport)viewport

    Параметры

    viewport

    3D прямоугольная область для отсечения области просмотра.

    Обсуждение

    x/y прямоугольник области просмотра должен лечь полностью в текущем присоединяемом размере. znear и zfar должны быть между 0.0 и 1.0. Зеркальное отражение позволяется.

    Отсекаются фрагменты, лежащие за пределами области просмотра вдоль размерностей x и y. Фрагменты за пределами z рядом и далеких плоскостей отсечения отсекаются.

    Значения по умолчанию для области просмотра originX = 0.0, originY = 0.0, width = w, height = h, znear = 0.0, and zfar = 1.0, где w и h размерности x и y присоединения, соответственно.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

  • Средства управления, как контролировать выборки, передающие глубину и получающие тесты с помощью шаблона. (требуемый)

    Объявление

    Swift

    func setVisibilityResultMode(_ mode: MTLVisibilityResultMode, offset offset: Int)

    Objective C

    - (void)setVisibilityResultMode:(MTLVisibilityResultMode)mode offset:(NSUInteger)offset

    Параметры

    mode

    Режим, определяющий, как контролируются выборки. Если mode установлен в MTLVisibilityResultModeBoolean и выборки передают глубину и получают тесты с помощью шаблона, средство рендеринга пишет любое ненулевое значение в буфер. Если mode установлен в MTLVisibilityResultModeDisabled, нет никакой попытки определить, проходят ли выборки те тесты.

    offset

    Как далеко расположение результата видимости от запуска буфера в байтах. offset должно быть кратное число 8 байтов.

    Обсуждение

    Значение по умолчанию для mode MTLVisibilityResultModeDisabled.

    visibilityResultBuffer свойство MTLRenderPassDescriptor указывает расположение буфера демонстрационного результата испытаний видимости. В MTLVisibilityResultModeBoolean режим, когда выборка передает, устройство, пишет ненулевое значение в буфер. Если никакие выборки не передают, устройство может записать нуль или может не выполнить записи вообще. Чтобы гарантировать, что ненулевое значение указывает, выборка передает, буфер должен быть инициализирован для обнуления.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

    См. также

    visibilityResultBuffer

  • Устанавливает буфер для функции вершинного шейдера в индексе в буферной таблице параметра со смещением, указывающим запуск данных. (требуемый)

    Объявление

    Swift

    func setVertexBuffer(_ buffer: MTLBuffer?, offset offset: Int, atIndex index: Int)

    Objective C

    - (void)setVertexBuffer:(id<MTLBuffer>)buffer offset:(NSUInteger)offset atIndex:(NSUInteger)index

    Параметры

    buffer

    Буфер для установки в таблице параметра.

    offset

    Как далеко запуск данных от запуска буфера в байтах.

    index

    Индекс в буферной таблице параметра.

    Обсуждение

    Буфер по умолчанию в каждом индексе nil.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

  • Устанавливает массив буферов для функции вершинного шейдера в диапазоне индексов в буферной таблице параметра. Этот метод также указывает соответствующие смещения для запуска каждого набора данных. (требуемый)

    Объявление

    Swift

    func setVertexBuffers(_ buffers: UnsafePointer<MTLBuffer?>, offsets offsets: UnsafePointer<Int>, withRange range: NSRange)

    Objective C

    - (void)setVertexBuffers:(const id<MTLBuffer> [])buffers offsets:(const NSUInteger [])offsets withRange:(NSRange)range

    Параметры

    buffers

    Массив буферов для установки в буферной таблице параметра.

    offsets

    Массив смещений, каждое из которых указывает, как далеко запуск его данных от запуска его соответствующего буфера в байтах.

    range

    Диапазон индексов в буферной таблице параметра.

    Обсуждение

    Буфер по умолчанию в каждом индексе nil.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

  • Устанавливает смещение, указывающее запуск данных для буфера, уже связанного с функцией вершинного шейдера. (требуемый)

    Объявление

    Swift

    func setVertexBufferOffset(_ offset: Int, atIndex index: Int)

    Objective C

    - (void)setVertexBufferOffset:(NSUInteger)offset atIndex:(NSUInteger)index

    Параметры

    offset

    Как далеко данные от запуска буфера в байтах.

    index

    Индекс в буферной таблице параметра.

    Обсуждение

    Вызовите этот метод для изменения смещения, которое Вы указали при привязке буфера с setVertexBuffer:offset:atIndex: или setVertexBuffers:offsets:withRange: метод, или указать смещение данных после того, как обязательные данные непосредственно к вершинному шейдеру функционируют с setVertexBytes:length:atIndex: метод.

    Используя этот метод может привести к более быстрой производительности, чем привязка того же буфера снова с различным смещением.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.3 и позже.

  • Устанавливает блок данных для функции вершинного шейдера в индексе в буферной таблице параметра. (требуемый)

    Объявление

    Swift

    func setVertexBytes(_ bytes: UnsafePointer<Void>, length length: Int, atIndex index: Int)

    Objective C

    - (void)setVertexBytes:(const void *)bytes length:(NSUInteger)length atIndex:(NSUInteger)index

    Параметры

    bytes

    Адрес памяти, с которого можно скопировать данные.

    length

    Размер, в байтах, данных, которые будут скопированы.

    index

    Индекс в буферной таблице параметра.

    Обсуждение

    Используя этот метод эквивалентно созданию нового MTLBuffer объект от указанных данных и затем привязки его к вершинному шейдеру функционирует с setVertexBuffer:offset:atIndex: или setVertexBuffers:offsets:withRange: метод, но избегает возможной производительности наверху создания посредника MTLBuffer объект.

    Этот метод является подходящим только для небольших, буферов данных с одним разовым использованием. Создайте a MTLBuffer возразите вместо этого, если Ваш буфер превышает 4 КБ в длине или сохранится для многократного использования (например, чтобы быть связанным с другим кодером команды для рендеринга следующего кадра).

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.3 и позже.

  • Устанавливает состояние сэмплера для функции вершинного шейдера в индексе в таблице параметра состояния сэмплера. (требуемый)

    Объявление

    Swift

    func setVertexSamplerState(_ sampler: MTLSamplerState, atIndex index: Int)

    Objective C

    - (void)setVertexSamplerState:(id<MTLSamplerState>)sampler atIndex:(NSUInteger)index

    Параметры

    sampler

    Состояние сэмплера для установки в таблице параметра.

    index

    Индекс в таблице параметра сэмплера.

    Обсуждение

    Состояние сэмплера по умолчанию в каждом индексе nil.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

  • Устанавливает массив состояний сэмплера для функции вершинного шейдера в диапазоне индексов в таблице параметра состояния сэмплера. (требуемый)

    Объявление

    Swift

    func setVertexSamplerStates(_ samplers: UnsafePointer<MTLSamplerState?>, withRange range: NSRange)

    Objective C

    - (void)setVertexSamplerStates:(const id<MTLSamplerState> [])samplers withRange:(NSRange)range

    Параметры

    samplers

    Массив состояний сэмплера для установки в таблице параметра.

    range

    Диапазон индексов в таблице параметра сэмплера.

    Обсуждение

    Состояние сэмплера по умолчанию в каждом индексе nil.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

  • Устанавливает состояние сэмплера для функции вершинного шейдера в индексе в таблице параметра состояния сэмплера. Этот метод также указывает значения зажима для минимального и максимального уровня подробности. (требуемый)

    Объявление

    Swift

    func setVertexSamplerState(_ sampler: MTLSamplerState, lodMinClamp lodMinClamp: Float, lodMaxClamp lodMaxClamp: Float, atIndex index: Int)

    Objective C

    - (void)setVertexSamplerState:(id<MTLSamplerState>)sampler lodMinClamp:(float)lodMinClamp lodMaxClamp:(float)lodMaxClamp atIndex:(NSUInteger)index

    Параметры

    sampler

    Состояние сэмплера для установки в таблице параметра.

    lodMinClamp

    Минимальный уровень подробности, использующейся при выборке текстуры.

    lodMaxClamp

    Максимальный уровень подробности, использующейся при выборке текстуры.

    index

    Индекс в таблице параметра сэмплера.

    Обсуждение

    Когда этот метод используется, значения зажима lodMinClamp и lodMaxClamp свойства состояния сэмплера проигнорированы.

    Состояние сэмплера по умолчанию в каждом индексе nil.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

  • Устанавливает массив состояний сэмплера для функции вершинного шейдера в диапазоне индексов в таблице параметра состояния сэмплера. Этот метод также указывает соответствующие значения зажима для минимальных и максимальных уровней подробности. (требуемый)

    Объявление

    Swift

    func setVertexSamplerStates(_ samplers: UnsafePointer<MTLSamplerState?>, lodMinClamps lodMinClamps: UnsafePointer<Float>, lodMaxClamps lodMaxClamps: UnsafePointer<Float>, withRange range: NSRange)

    Objective C

    - (void)setVertexSamplerStates:(const id<MTLSamplerState> [])samplers lodMinClamps:(const float [])lodMinClamps lodMaxClamps:(const float [])lodMaxClamps withRange:(NSRange)range

    Параметры

    samplers

    Массив состояний сэмплера для установки в таблице параметра.

    lodMinClamps

    Массив минимальных уровней подробности, использующихся при выборке текстур и соответствующих samplers массив.

    lodMaxClamps

    Массив максимальных уровней подробности, использующихся при выборке текстур и соответствующих samplers массив.

    range

    Диапазон индексов в таблице параметра сэмплера.

    Обсуждение

    Когда этот метод используется, значения зажима lodMinClamp и lodMaxClamp свойства состояния сэмплера проигнорированы.

    Состояние сэмплера по умолчанию в каждом индексе nil.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

  • Устанавливает текстуру для функции вершинного шейдера в индексе в таблице параметра текстуры. (требуемый)

    Объявление

    Swift

    func setVertexTexture(_ texture: MTLTexture?, atIndex index: Int)

    Objective C

    - (void)setVertexTexture:(id<MTLTexture>)texture atIndex:(NSUInteger)index

    Параметры

    texture

    Текстура для установки в таблице параметра.

    index

    Индекс в таблице параметра текстуры.

    Обсуждение

    Текстура по умолчанию в каждом индексе nil.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

  • Устанавливает массив текстур для функции вершинного шейдера в диапазоне индексов в таблице параметра текстуры. (требуемый)

    Объявление

    Swift

    func setVertexTextures(_ textures: UnsafePointer<MTLTexture?>, withRange range: NSRange)

    Objective C

    - (void)setVertexTextures:(const id<MTLTexture> [])textures withRange:(NSRange)range

    Параметры

    textures

    Массив текстур для установки в таблице параметра текстуры.

    range

    Диапазон индексов в таблице параметра текстуры.

    Обсуждение

    Текстура по умолчанию в каждом индексе nil.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

  • Устанавливает буфер для функции программы построения теней фрагмента в индексе в буферной таблице параметра со смещением, указывающим запуск данных. (требуемый)

    Объявление

    Swift

    func setFragmentBuffer(_ buffer: MTLBuffer?, offset offset: Int, atIndex index: Int)

    Objective C

    - (void)setFragmentBuffer:(id<MTLBuffer>)buffer offset:(NSUInteger)offset atIndex:(NSUInteger)index

    Параметры

    buffer

    Буфер для установки в таблице параметра.

    offset

    Как далеко данные от запуска буфера в байтах.

    index

    Индекс в буферной таблице параметра.

    Обсуждение

    Буфер по умолчанию в каждом индексе nil.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

  • Устанавливает массив буферов для функции программы построения теней фрагмента в диапазоне индексов в буферной таблице параметра. Этот метод также указывает соответствующие смещения для запуска каждого набора данных. (требуемый)

    Объявление

    Swift

    func setFragmentBuffers(_ buffers: UnsafePointer<MTLBuffer?>, offsets offsets: UnsafePointer<Int>, withRange range: NSRange)

    Objective C

    - (void)setFragmentBuffers:(const id<MTLBuffer> [])buffers offsets:(const NSUInteger [])offsets withRange:(NSRange)range

    Параметры

    buffers

    Массив буферов для установки в буферной таблице параметра.

    offsets

    Массив смещений, каждое из которых указывает, как далеко данные от запуска его соответствующего буфера в байтах.

    range

    Диапазон индексов в буферной таблице параметра.

    Обсуждение

    Буфер по умолчанию в каждом индексе nil.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

  • Устанавливает смещение, указывающее запуск данных для буфера, уже связанного с функцией программы построения теней фрагмента. (требуемый)

    Объявление

    Swift

    func setFragmentBufferOffset(_ offset: Int, atIndex index: Int)

    Objective C

    - (void)setFragmentBufferOffset:(NSUInteger)offset atIndex:(NSUInteger)index

    Параметры

    offset

    Как далеко данные от запуска буфера в байтах.

    index

    Индекс в буферной таблице параметра.

    Обсуждение

    Вызовите этот метод для изменения смещения, которое Вы указали при привязке буфера с setFragmentBuffer:offset:atIndex: или setFragmentBuffers:offsets:withRange: метод, или указать смещение данных после того, как обязательные данные непосредственно к программе построения теней фрагмента функционируют с setFragmentBytes:length:atIndex: метод.

    Используя этот метод может привести к более быстрой производительности, чем привязка того же буфера снова с различным смещением.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.3 и позже.

  • Устанавливает блок данных для функции программы построения теней фрагмента в индексе в буферной таблице параметра. (требуемый)

    Объявление

    Swift

    func setFragmentBytes(_ bytes: UnsafePointer<Void>, length length: Int, atIndex index: Int)

    Objective C

    - (void)setFragmentBytes:(const void *)bytes length:(NSUInteger)length atIndex:(NSUInteger)index

    Параметры

    bytes

    Адрес памяти, с которого можно скопировать данные.

    length

    Размер, в байтах, данных, которые будут скопированы.

    index

    Индекс в буферной таблице параметра.

    Обсуждение

    Используя этот метод эквивалентно созданию нового MTLBuffer объект от указанных данных и затем привязки его к программе построения теней фрагмента функционирует с setFragmentBuffer:offset:atIndex: или setFragmentBuffers:offsets:withRange: метод, но избегает возможной производительности наверху создания посредника MTLBuffer объект.

    Этот метод является подходящим только для небольших, буферов данных с одним разовым использованием. Создайте a MTLBuffer возразите вместо этого, если Ваш буфер превышает 4 КБ в длине или сохранится для многократного использования (например, чтобы быть связанным с другим кодером команды для рендеринга следующего кадра).

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.3 и позже.

  • Устанавливает состояние сэмплера для функции программы построения теней фрагмента в индексе в таблице параметра состояния сэмплера. (требуемый)

    Объявление

    Swift

    func setFragmentSamplerState(_ sampler: MTLSamplerState, atIndex index: Int)

    Objective C

    - (void)setFragmentSamplerState:(id<MTLSamplerState>)sampler atIndex:(NSUInteger)index

    Параметры

    sampler

    Состояние сэмплера для установки в таблице параметра.

    index

    Индекс в таблице параметра сэмплера.

    Обсуждение

    Состояние сэмплера по умолчанию в каждом индексе nil.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

  • Устанавливает массив состояний сэмплера для функции программы построения теней фрагмента в диапазоне индексов в таблице параметра состояния сэмплера. (требуемый)

    Объявление

    Swift

    func setFragmentSamplerStates(_ samplers: UnsafePointer<MTLSamplerState?>, withRange range: NSRange)

    Objective C

    - (void)setFragmentSamplerStates:(const id<MTLSamplerState> [])samplers withRange:(NSRange)range

    Параметры

    samplers

    Массив состояний сэмплера для установки в таблице параметра.

    range

    Диапазон индексов в таблице параметра сэмплера.

    Обсуждение

    Состояние сэмплера по умолчанию в каждом индексе nil.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

  • Устанавливает состояние сэмплера для функции программы построения теней фрагмента в индексе в таблице параметра состояния сэмплера. Этот метод также указывает значения зажима для минимального и максимального уровня подробности. (требуемый)

    Объявление

    Swift

    func setFragmentSamplerState(_ sampler: MTLSamplerState, lodMinClamp lodMinClamp: Float, lodMaxClamp lodMaxClamp: Float, atIndex index: Int)

    Objective C

    - (void)setFragmentSamplerState:(id<MTLSamplerState>)sampler lodMinClamp:(float)lodMinClamp lodMaxClamp:(float)lodMaxClamp atIndex:(NSUInteger)index

    Параметры

    sampler

    Состояние сэмплера для установки в таблице параметра.

    lodMinClamp

    Минимальный уровень подробности, использующейся при выборке текстуры.

    lodMaxClamp

    Максимальный уровень подробности, использующейся при выборке текстуры.

    index

    Индекс в таблице параметра сэмплера.

    Обсуждение

    Когда этот метод используется, значения зажима lodMinClamp и lodMaxClamp свойства состояния сэмплера проигнорированы.

    Состояние сэмплера по умолчанию в каждом индексе nil.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

  • Устанавливает массив состояний сэмплера для функции программы построения теней фрагмента в диапазоне индексов в таблице параметра состояния сэмплера. Этот метод также указывает соответствующие значения зажима для минимальных и максимальных уровней подробности. (требуемый)

    Объявление

    Swift

    func setFragmentSamplerStates(_ samplers: UnsafePointer<MTLSamplerState?>, lodMinClamps lodMinClamps: UnsafePointer<Float>, lodMaxClamps lodMaxClamps: UnsafePointer<Float>, withRange range: NSRange)

    Objective C

    - (void)setFragmentSamplerStates:(const id<MTLSamplerState> [])samplers lodMinClamps:(const float [])lodMinClamps lodMaxClamps:(const float [])lodMaxClamps withRange:(NSRange)range

    Параметры

    samplers

    Массив состояний сэмплера для установки в таблице параметра.

    lodMinClamps

    Массив минимальных уровней подробности, использующихся при выборке текстур и соответствующих samplers массив.

    lodMaxClamps

    Массив максимальных уровней подробности, использующихся при выборке текстур и соответствующих samplers массив.

    range

    Диапазон индексов в таблице параметра сэмплера.

    Обсуждение

    Когда этот метод используется, значения зажима lodMinClamp и lodMaxClamp свойства состояния сэмплера проигнорированы.

    Состояние сэмплера по умолчанию в каждом индексе nil.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

  • Устанавливает текстуру для функции программы построения теней фрагмента в индексе в таблице параметра текстуры. (требуемый)

    Объявление

    Swift

    func setFragmentTexture(_ texture: MTLTexture?, atIndex index: Int)

    Objective C

    - (void)setFragmentTexture:(id<MTLTexture>)texture atIndex:(NSUInteger)index

    Параметры

    texture

    Текстура для установки в таблице параметра.

    index

    Индекс в таблице параметра текстуры.

    Обсуждение

    Текстура по умолчанию в каждом индексе nil.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

  • Устанавливает массив текстур для функции программы построения теней фрагмента в диапазоне индексов в таблице параметра текстуры. (требуемый)

    Объявление

    Swift

    func setFragmentTextures(_ textures: UnsafePointer<MTLTexture?>, withRange range: NSRange)

    Objective C

    - (void)setFragmentTextures:(const id<MTLTexture> [])textures withRange:(NSRange)range

    Параметры

    textures

    Массив текстур для установки в таблице параметра текстуры.

    range

    Диапазон индексов в таблице параметра текстуры.

    Обсуждение

    Текстура по умолчанию в каждом индексе nil.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

  • Рендеринг много экземпляров примитивов с помощью данных вершины в непрерывных элементах матрицы. (требуемый)

    Объявление

    Swift

    func drawPrimitives(_ primitiveType: MTLPrimitiveType, vertexStart vertexStart: Int, vertexCount vertexCount: Int, instanceCount instanceCount: Int)

    Objective C

    - (void)drawPrimitives:(MTLPrimitiveType)primitiveType vertexStart:(NSUInteger)vertexStart vertexCount:(NSUInteger)vertexCount instanceCount:(NSUInteger)instanceCount

    Параметры

    primitiveType

    Тип примитивов, в которые собраны вершины.

    vertexStart

    Первый индекс, который нарисует.

    vertexCount

    Число индексов для рисования.

    instanceCount

    Число экземпляров для рисования.

    Обсуждение

    Экземпляр запускается с первой вершины в элементе матрицы в индексе vertexStart и концы в элементе матрицы в индексе vertexStart + vertexCount - 1. instanceCount определяет число экземпляров для рисования.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

  • Рендеринг один экземпляр примитивов с помощью данных вершины в непрерывных элементах матрицы. (требуемый)

    Объявление

    Swift

    func drawPrimitives(_ primitiveType: MTLPrimitiveType, vertexStart vertexStart: Int, vertexCount vertexCount: Int)

    Objective C

    - (void)drawPrimitives:(MTLPrimitiveType)primitiveType vertexStart:(NSUInteger)vertexStart vertexCount:(NSUInteger)vertexCount

    Параметры

    primitiveType

    Тип примитивов, в которые собраны вершины.

    vertexStart

    Для каждого экземпляра, первый индекс, который нарисует.

    vertexCount

    Для каждого экземпляра, числа индексов для рисования.

    Обсуждение

    Получение запускается с первой вершины в элементе матрицы в индексе vertexStart и концы в элементе матрицы в индексе vertexStart + vertexCount - 1. drawPrimitives:vertexStart:vertexCount: совпадает с drawPrimitives:vertexStart:vertexCount:instanceCount: с instanceCount =1.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

  • Рендеринг много экземпляров примитивов с помощью индексного списка указан в буфере. (требуемый)

    Объявление

    Swift

    func drawIndexedPrimitives(_ primitiveType: MTLPrimitiveType, indexCount indexCount: Int, indexType indexType: MTLIndexType, indexBuffer indexBuffer: MTLBuffer, indexBufferOffset indexBufferOffset: Int, instanceCount instanceCount: Int)

    Objective C

    - (void)drawIndexedPrimitives:(MTLPrimitiveType)primitiveType indexCount:(NSUInteger)indexCount indexType:(MTLIndexType)indexType indexBuffer:(id<MTLBuffer>)indexBuffer indexBufferOffset:(NSUInteger)indexBufferOffset instanceCount:(NSUInteger)instanceCount

    Параметры

    primitiveType

    Тип примитива, в который собраны вершины.

    indexCount

    Для каждого экземпляра, числа индексов для чтения из индексного буфера.

    indexType

    Тип данных индексов: любой 16-разрядное целое без знака (MTLIndexTypeUInt16) или 32-разрядное целое без знака (MTLIndexTypeUInt32).

    indexBuffer

    Буфер, содержащий индексы к вершинам.

    indexBufferOffset

    Байтовое смещение в indexBuffer начинать читать индексы из.

    instanceCount

    Число экземпляров для рисования.

    Обсуждение

    Примитивная функциональность перезапуска добавляется с самым большим индексным значением целого без знака, относительно indexType (0xFFFF для MTLIndexTypeUInt16 или 0xFFFFFFFF для MTLIndexTypeUInt32). Это функция заканчивает рисовать текущий примитив в указанном индексе и начинает рисовать новый со следующим индексом.

    indexBufferOffset должен быть выровненный к 4 байтам.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

  • Рендеринг один экземпляр примитивов с помощью индексного списка указан в буфере. (требуемый)

    Объявление

    Swift

    func drawIndexedPrimitives(_ primitiveType: MTLPrimitiveType, indexCount indexCount: Int, indexType indexType: MTLIndexType, indexBuffer indexBuffer: MTLBuffer, indexBufferOffset indexBufferOffset: Int)

    Objective C

    - (void)drawIndexedPrimitives:(MTLPrimitiveType)primitiveType indexCount:(NSUInteger)indexCount indexType:(MTLIndexType)indexType indexBuffer:(id<MTLBuffer>)indexBuffer indexBufferOffset:(NSUInteger)indexBufferOffset

    Параметры

    primitiveType

    Тип примитива, в который собраны вершины.

    indexCount

    Для каждого экземпляра, числа индексов для чтения из индексного буфера.

    indexType

    Тип данных индексов: любое 16-разрядное целое без знака (MTLIndexTypeUInt16) или 32-разрядное целое без знака (MTLIndexTypeUInt32).

    indexBuffer

    Буфер, содержащий индексы к вершинам.

    indexBufferOffset

    Байтовое смещение в indexBuffer начинать читать индексы из.

    Обсуждение

    Примитивная функциональность перезапуска добавляется с самым большим индексным значением целого без знака, относительно indexType (0xFFFF для MTLIndexTypeUInt16 или 0xFFFFFFFF для MTLIndexTypeUInt32). Это функция заканчивает рисовать текущий примитив в указанном индексе и начинает рисовать новый со следующим индексом.

    indexBufferOffset должен быть выровненный к 4 байтам.

    drawIndexedPrimitives:indexCount:indexType:indexBuffer:indexBufferOffset: совпадает с drawIndexedPrimitives:indexCount:indexType:indexBuffer:indexBufferOffset:instanceCount: с instanceCount =1.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

Типы данных

  • Геометрический тип примитива для команд рисования.

    Объявление

    Swift

    enum MTLPrimitiveType : UInt { case Point case Line case LineStrip case Triangle case TriangleStrip }

    Objective C

    typedef enum : NSUInteger { MTLPrimitiveTypePoint = 0, MTLPrimitiveTypeLine = 1, MTLPrimitiveTypeLineStrip = 2, MTLPrimitiveTypeTriangle = 3, MTLPrimitiveTypeTriangleStrip = 4 } MTLPrimitiveType;

    Константы

    • Point

      MTLPrimitiveTypePoint

      Растеризируйте точку в каждой вершине. Вершинный шейдер должен обеспечить [[point_size]], или размер точки не определен.

      Доступный в iOS 8.0 и позже.

    • Line

      MTLPrimitiveTypeLine

      Растеризируйте строку между каждой отдельной парой вершин, приводящих к серии несвязанных строк. Если существует нечетное число вершин, последняя вершина проигнорирована.

      Доступный в iOS 8.0 и позже.

    • LineStrip

      MTLPrimitiveTypeLineStrip

      Растеризируйте строку между каждой парой смежных вершин, приводящих к серии связанных строк (также названный ломаной линией).

      Доступный в iOS 8.0 и позже.

    • Triangle

      MTLPrimitiveTypeTriangle

      Для каждого отдельного набора трех вершин растеризируйте треугольник. Если число вершин не является кратным числом три, или одна или две вершины проигнорированы.

      Доступный в iOS 8.0 и позже.

    • TriangleStrip

      MTLPrimitiveTypeTriangleStrip

      Для каждых трех смежных вершин растеризируйте треугольник.

      Доступный в iOS 8.0 и позже.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

  • Индексный тип для индексного буфера, что ссылочные вершины геометрических примитивов.

    Объявление

    Swift

    enum MTLIndexType : UInt { case UInt16 case UInt32 }

    Objective C

    typedef enum : NSUInteger { MTLIndexTypeUInt16 = 0, MTLIndexTypeUInt32 = 1 } MTLIndexType;

    Константы

    • UInt16

      MTLIndexTypeUInt16

      16-разрядное целое без знака, используемое в качестве примитивного индекса.

      Доступный в iOS 8.0 и позже.

    • UInt32

      MTLIndexTypeUInt32

      32-разрядное целое без знака, используемое в качестве примитивного индекса.

      Доступный в iOS 8.0 и позже.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

  • Режим, определяющий, передают ли выборки глубину и получают тесты с помощью шаблона и контролировать ли выборки та передача.

    Объявление

    Swift

    enum MTLVisibilityResultMode : UInt { case Disabled case Boolean }

    Objective C

    typedef enum : NSUInteger { MTLVisibilityResultModeDisabled = 0, MTLVisibilityResultModeBoolean = 1 } MTLVisibilityResultMode;

    Константы

    • Disabled

      MTLVisibilityResultModeDisabled

      Не контролируйте выборки, передающие глубину и получающие тесты с помощью шаблона.

      Доступный в iOS 8.0 и позже.

    • Boolean

      MTLVisibilityResultModeBoolean

      Укажите, передают ли выборки глубину и получают тесты с помощью шаблона.

      Доступный в iOS 8.0 и позже.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

  • Режим, определяющий, выполнить ли отбор и который тип примитивных отобрать.

    Объявление

    Swift

    enum MTLCullMode : UInt { case None case Front case Back }

    Objective C

    typedef enum : NSUInteger { MTLCullModeNone = 0, MTLCullModeFront = 1, MTLCullModeBack = 2 } MTLCullMode;

    Константы

    • None

      MTLCullModeNone

      Не отбирать.

      Доступный в iOS 8.0 и позже.

    • Front

      MTLCullModeFront

      Отберите обращенные к передней стороне примитивы.

      Доступный в iOS 8.0 и позже.

    • Back

      MTLCullModeBack

      Отберите обращенные к задней стороне примитивы.

      Доступный в iOS 8.0 и позже.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

  • Правило проветривания вершины, определяющее обращенный к передней стороне примитив.

    Объявление

    Swift

    enum MTLWinding : UInt { case Clockwise case CounterClockwise }

    Objective C

    typedef enum : NSUInteger { MTLWindingClockwise = 0, MTLWindingCounterClockwise = 1 } MTLWinding;

    Константы

    • Clockwise

      MTLWindingClockwise

      Примитив, которому подошли к концу его вершины по часовой стрелке, упорядочивает, обращено к передней стороне.

      Доступный в iOS 8.0 и позже.

    • CounterClockwise

      MTLWindingCounterClockwise

      Примитив, которому подошли к концу его вершины против часовой стрелки, упорядочивает, обращено к передней стороне.

      Доступный в iOS 8.0 и позже.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

  • Режим, определяющий, как растеризировать треугольные и треугольные примитивы полосы.

    Объявление

    Swift

    enum MTLTriangleFillMode : UInt { case Fill case Lines }

    Objective C

    typedef enum : NSUInteger { MTLTriangleFillModeFill = 0, MTLTriangleFillModeLines = 1 } MTLTriangleFillMode;

    Константы

    • Fill

      MTLTriangleFillModeFill

      Растеризируйте треугольные и треугольные примитивы полосы как заполненные треугольники.

      Доступный в iOS 8.0 и позже.

    • Lines

      MTLTriangleFillModeLines

      Растеризируйте треугольные и треугольные примитивы полосы как строки.

      Доступный в iOS 8.0 и позже.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.