Я использую SceneKit для отображения произвольных изображений от пользователя. Однако, если изображение слишком велико, оно превышает максимальный поддерживаемый устройством размер текстуры и дает сбой. В идеале я хотел бы определить, слишком ли велико изображение, и уменьшить его до максимального поддерживаемого разрешения.
Однако я не могу найти способ получить максимальное поддерживаемое разрешение программно.
Apple публикует «Таблицы наборов металлических функций» PDF, в котором указаны значения для различных устройств. Сообщение об ошибке, которое вы получаете, даже сообщает вам максимальное значение для этого устройства:
validateTextureDimensions, line 1227: error 'MTLTextureDescriptor has width (18000) greater than the maximum allowed size of 16384.'
Однако я не могу найти никаких свойств для MTLTextureDescriptor
, MTLTexture
, MTLDevice
и т. Д. это скажет мне ценность в расширенном. Ближайшее, что я видел, - это MTLFeatureSet
API, а затем ручная проверка его по таблице поиска значений, перечисленных в PDF.
Этот ответ кажется быть тем, что я ищу, но использует OpenGL ES, который уже несколько лет обесценился.
Есть ли способ программно получить максимальное поддерживаемое разрешение текстуры для текущего устройства с помощью Metal?