Ограниченный режим GPU
При инициализации рендерер определяет возможности устройства и выбирает high или constrained. Ограниченный режим не держит в памяти большие растровые фоны в полном разрешении. Автоопределение не требует изменений в приложении.
Автоопределение
Устройство получает ограниченный режим при любом из условий:
- Плотность пикселей устройства не ниже 3.
- Доступен сенсорный ввод и основной указатель имеет тип coarse.
- Тест загрузки текстур GPU занимает больше 30 мс.
Тест десять раз загружает текстуру RGBA размером 512 × 512 и измеряет завершение. Заявленный максимальный размер текстуры сам по себе не определяет режим. Это правила рендеринга, а не гарантия для конкретной модели телефона.
Начиная с Renderer 1.75, размер экрана не влияет на режим. Более ранние версии также переводят в ограниченный режим устройство, у которого физическая площадь экрана больше 8 миллионов пикселей, в том числе компьютер с монитором 4K или большим внешним монитором. В Renderer 1.74 такой компьютер при рисовании в WebGL показывает фон без тайлов только в виде превью.
Поведение фона
Таблица описывает преобразованные растровые фоны. Загрузка изображений SVG сохраняет прежнее поведение. Canvas2D — рендерер по умолчанию. WebGL используется, только если задать switchToWebGL: true и браузер его поддерживает, поэтому интеграция с настройками по умолчанию следует строке Canvas2D.
| Параметр | Режим high | Режим constrained |
|---|---|---|
| Общий вид | Превью | Превью |
| Детализация WebGL с тайлами | Ограниченная область из тайлов | Ограниченная область из тайлов |
| Детализация WebGL без тайлов | Резервная загрузка полного изображения | Только превью |
| Фон в Canvas2D | Полное изображение | Самое крупное изображение до 8,4 млн пикселей |
При наличии тайлов рендерер собирает нужную видимую область в текстуру ограниченного размера. При уменьшении масштаба текстура освобождается; устаревшие результаты быстрых перемещений отбрасываются.
Начиная с Renderer 1.74, ограниченное устройство, рисующее в WebGL без тайлов, использует превью при любом масштабе. При увеличении фон может выглядеть менее чётким. Полное изображение для вырезания области в этом режиме не декодируется. В режиме high резервная загрузка сохраняется.
Начиная с Renderer 1.75, рендерер Canvas2D на ограниченном устройстве загружает самое крупное фоновое изображение площадью до 8,4 миллиона пикселей, как у изображения 4096 × 2048: полное изображение, если оно укладывается, иначе самый крупный уровень пониженного разрешения, созданный для больших фонов. Если ни одно изображение не укладывается, остаётся превью, которое при увеличении выглядит менее чётким. Полное изображение большой площадки в этом режиме не декодируется.
Настройка
Не задавайте gpuTier для автоопределения:
const renderer = new SeatmapBookingRenderer(container, {
publicKey: 'your-public-key',
});
Для фиксированного режима устройства:
const renderer = new SeatmapBookingRenderer(container, {
publicKey: 'your-public-key',
gpuTier: 'constrained',
});
Допустимы high и constrained. Явная настройка имеет приоритет над параметром URL gpuTier, а параметр — над автоопределением. Для проверки добавьте ?gpuTier=constrained к адресу страницы с рендерером. Принудительный high также возвращает фон в полном разрешении в Canvas2D на устройствах, определённых как ограниченные, и они снова декодируют полное изображение.
Проверка
Включите debug: true, чтобы проверить выбранный режим и загрузку фона в консоли браузера. Проверьте схемы с тайлами и только с превью на физических устройствах, поддерживаемых приложением. Эмуляция на компьютере не подтверждает поведение памяти телефона.