Это немного сбивает с толку, так что давайте пройдемся по нему.
texture2DDescriptorWithPixelFormat
принимает format
, width
, height
и mipmapped
в качестве параметров. Параметр mipmapped
предназначен для того, чтобы Металл вычислил количество уровней mip, которое будет иметь результирующее изображение, поскольку нет параметра для передачи количества уровней mip. Вот как это описано в документации:
mipmapped
A Boolean
указывает, должно ли полученное изображение быть
мип. Если YES
, то свойство mipmapLevelCount
в возвращаемом
дескриптор вычисляется из width
и height
. Если NO
, то
mipmapLevelCount
is 1
.
Если бы вы использовали newTextureWithDescriptor
с дескриптором текстуры, который вы создали явно, то параметра mipmapped
нет, поскольку вы явно передаете число уровней mip в свойстве mipmapLevelCount
MTLTextureDescriptor
.
Поскольку вы создаете новую текстуру, нет смысла генерировать мипмапов, так как текстура пуста.
Метод generateMipmapsForTexture
используется для создания мипмапов для текстуры, у которой уже имеет уровни мипов, и вам просто нужно заполнить их мипмапами, сгенерированными автоматически.
Итак, чтобы получить это прямолинейное значение, параметр mipmapped
просто говорит Metal создать текстуру, имеющую уровни mip, которую вы можете позже заполнить (если хотите) generateMipmapsForTexture
(или другими способами, такими как использование текстура как цветовая привязка в проходе рендеринга с указанным уровнем)