У меня есть игра, написанная с помощью SpriteKit, которая использует SKEffectNode с эффектом размытия, чтобы размыть набор спрайтов, один из которых имеет довольно большую текстуру и которые вместе покрывают довольно большую площадь экрана. IMac и Mac Book Pro справляются с этим довольно успешно, но в более скромной Mac Book наблюдается заметное падение частоты кадров с добавленным узлом эффекта. Поскольку эффект не имеет решающего значения для функциональности игры, я мог бы просто не добавляйте SKEffectNode для машин с менее мощными графическими возможностями.Запросить графические возможности для принятия решения о применении эффектов, интенсивно использующих GPU (через SpriteKit)
Итак, вопрос: что было бы хорошей программной проверкой, которую я мог бы сделать, чтобы определить «мощность графического процессора» или «производительность при применении эффектов текстуры» или [предложить лучшую метрику здесь] и через какой API? Спасибо за ваши предложения!
Извините за странные вопросы: этот эффект статический, в том смысле, что вы не оживляете количество размытия, например, от 10 до 100 единиц, т. е. всегда напр. 100 единиц размытия? – Confused
Q2. Сохраняется ли текстура, которая будет размыта, меняется ли она или всегда одна и та же текстура? – Confused
Вопрос: Если значение размытия является статическим, и текстура может быть предсказана, вы можете сделать одну важную вещь для оптимизации производительности: предварительно визуализировать размытие и сохранить его как текстуру, применяемую в качестве текстуры, когда вам нужно размытое эффект. Если текстура изменяется, но величина размытия постоянна, вы можете сделать размытие всякий раз, когда вам нужно, а затем установить растеризацию в true: https://developer.apple.com/reference/spritekit/skeffectnode/1459381-shouldrasterize – Confused