Проверьте, выполняются ли CSS-преобразования с использованием аппаратного ускорения.

Я долгое время работал над одной конкретной проблемой, чтобы сделать изображение svg, которое можно перетаскивать и масштабировать с помощью жестов на мобильном телефоне.

Я использую Hammer.js для обнаружения жестов, и моя текущая реализация работает следующим образом.

При обнаружении перетаскивания элемент SVG преобразуется с помощью преобразования (-webkit-) со значением matrix3d. По завершении жеста вычисляется новое окно просмотра, и преобразование возвращается в матрицу идентичности.

При обнаружении сжатия элемент SVG масштабируется с помощью преобразования (-webkit-) со значением matrix3d. По завершении жеста вычисляется новое окно просмотра, и преобразование возвращается в матрицу идентичности.

Для дальнейшего повышения производительности изменения атрибутов применяются внутри вызовов кадров анимации запроса.

Это означает, что при масштабировании изображение будет растровым во время масштабирования, а затем будет небольшая задержка, и оно будет четко перерисовано после завершения вычислений окна просмотра.

Вся цель этого сложного процесса заключается в том, чтобы трансформация/масштабирование во время жеста могла выполняться с использованием графического процессора и обеспечивать плавный пользовательский интерфейс.

Что я хочу сделать, так это проверить, было ли конкретное преобразование передано графическому процессору или нет?

Например, эта страница выполняет описанный выше код. В большинстве настольных браузеров это работает нормально, но это потому, что производительность рабочего стола означает, что нет заметной задержки, даже если изображение постоянно перерисовывается.

Интересное поведение происходит на мобильных устройствах. Когда я использую эту страницу в браузере на своем телефоне Android, перетаскивание и масштабирование выполняются плавно. Когда я открываю ту же страницу на том же телефоне, но в хроме анимация гораздо менее плавная. Растры изображения отображаются как при увеличении, так и в том, что я хочу сделать, это проверить, использует ли хром аппаратное обеспечение для этого преобразования. Я хочу использовать аппаратное обеспечение в как можно большем количестве браузеров, но этот вопрос касается проверки того, удалось ли мне это сделать.


person Peter Saxton    schedule 13.08.2014    source источник
comment
Это невозможно.   -  person Robert Longson    schedule 13.08.2014