Преобразование языка шейдера Core Image в металл с поддержкой симулятора - PullRequest
0 голосов
/ 12 декабря 2018

Мое приложение имеет несколько шейдеров Core Image, написанных на языке Core Image Shader.Я загружаю их как CIColorKernel(source: <kernel string here>).Я только что изменил цель развертывания моего приложения с iOS 11.0 до 12.0.Теперь я получаю следующие предупреждения:

'init(source:)' was deprecated in iOS 12.0: Core Image Kernel Language API deprecated. (Define CI_SILENCE_GL_DEPRECATION to silence these warnings)

Поскольку наше приложение построено с предупреждениями, относящимися к ошибкам, я должен скрыть или исправить это предупреждение.

Я мог бы переписать шейдеры в металлическом шейдереязык, поэтому я могу использовать CIColorKernel(functionName: <name>, fromMetalLibraryData: <data>), однако Metal не поддерживается в симуляторе.Поэтому, если я это сделаю, мы не сможем получить скриншоты всех необходимых нам устройств с симулятора.Я мог переписать шейдеры в металле и загружать только металлические при работе на устройстве, возвращаясь к текущим на симуляторе.Однако это не кажется идеальным, поскольку у нас есть 2 набора функций для поддержки.Это также требует, чтобы я как-то скрыл предупреждение об устаревании.

Итак, есть ли какие-либо предложения о неосмотрительном способе написания шейдеров, которые вы можете запустить в симуляторе?Если нет, я могу просто попытаться заставить замолчать предупреждения до iOS 13 и надеяться, что сим получит лучшую поддержку.Я не могу понять, как Define CI_SILENCE_GL_DEPRECATION to silence these warnings.Я попытался добавить CI_SILENCE_GL_DEPRECATION параметр сборки.

Обновление Так как это был конец года, я использовал один из наших двух билетов DTS, чтобы спросить Apple, как заставить его замолчать.Их ответом было использование #pragma GCC diagnostic ignored "-Wdeprecated-declarations” в файле Objective-C для отключения всех устаревших предупреждений или сообщение об ошибке из-за невозможности заставить замолчать это предупреждение.:( Думаю, на данный момент мне просто нужно оставить цель развертывания этой платформы на iOS 11, и надеюсь, что мне не нужно обновляться до 12 для некоторой будущей функции / ошибки. Цель развертывания основного приложения все еще может быть 12хотя пока что это не повлияет на пользователей.

...