Добавление пользовательских текстур в модификаторы шейдеров SceneKit

Я пытаюсь использовать текстуру для изменения данных вершин SCNPlane. Согласно документации и слайдам WWDC 2013, нужно просто указать SCNMaterialProperty, используя -setValue:forKey: на плоскости или материале. Это прекрасно работает, но только в том случае, если для свойства материала -contents установлено либо строка/URL-адрес файла изображения, либо сам объект NSImage. Я получаю соответствующим образом деформированную сетку (я устанавливаю значение Z сетки в R-канал входной текстуры).

Однако я пытаюсь использовать свои собственные данные текстуры, которые изначально генерируются из AVFoundation с некоторой обработкой изображений, выполняемой на ЦП. Я попытался предоставить его как SKTexture, создав объект MDLTexture (и все необходимые ему классы), используя GLKTextureLoader и даже перегнав данные в GLKTextureInfo. Загрузка изображения с помощью NSImage, затем извлечение NSBitmapImageRep и заполнение из него различных классов текстур также не работает. Металл не вариант, так как у меня нет достаточно современного оборудования везде, где это должно работать.

Каков наилучший способ получить данные текстуры в модификаторах шейдера SceneKit? Тот факт, что он работает с образами на диске, наводит меня на мысль, что я что-то упускаю, но не могу точно определить, что именно. class-dump также не предлагает каких-либо очевидных методов, которые мне нужно вызывать.

Большое спасибо!


person sbwilson    schedule 20.02.2016    source источник
comment
stackoverflow.com/questions /18641434/ помочь?   -  person Hal Mueller    schedule 21.02.2016
comment
Это касается использования пользовательских SCNProgram, а не модификаторов шейдеров. Я подозреваю, что есть какой-то трюк с использованием SCNMaterialProperty с чем-либо, кроме пути к изображению, хотя нет четкой документации о том, какая еще подготовка требуется для загрузки текстуры.   -  person sbwilson    schedule 21.02.2016
comment
После еще многих часов игры я бросил эту работу и пошел по пользовательскому маршруту SCNProgram, наконец, с большим успехом. Любопытно услышать, есть ли ответ, потому что было бы неплохо иметь возможность использовать встроенное освещение и другие части SceneKit...   -  person sbwilson    schedule 29.02.2016
comment
@sbwilson, вы заметили, что при использовании пользовательской SCNProgram вы теряете стандартные проверки отбраковки усеченной пирамиды SceneKit? Вы можете это подтвердить или опровергнуть? У меня проблемы с Metal, но я считаю, что проверки усечения пирамиды не имеют ничего общего с рендерингом.   -  person Ef Dot    schedule 16.03.2016