Обнаружение «мощного» браузера, способного делать графику с приличной скоростью - PullRequest
3 голосов
/ 12 июля 2011

Я создаю мобильный сервис HTML5, где я отображаю полигональные маркеры на изображении карты.Я анимирую маркеры, рисуя их, а затем применяя анимацию CSS3.

Это был частичный успех.Такие устройства, как Android Galaxy S, отображают анимацию плавно, а iPod второго поколения - нет.Оба имеют браузер WebKit с почти одинаковым набором функций.В другом - 500 МГц GPU 64 МБ памяти, в другом - 1 ГГц ЦП и 700 МБ памяти.

Проблема в том, как разделить устройства на категории низкого и высокого класса.Это больше похоже на вопрос наличия памяти и процессора, и эти два факта никогда не раскрываются в Javascript (что отстой).

  • Можете ли вы легко получить какое-либо измерение скорости рендеринга для Javascript?

  • Любые предварительно собранные таблицы, в которых указывается процессор, память и состояние ускорения устройства на основе пользовательского агента?

В настоящее время я добавил простую эвристику, пытаясьопределить размер маркера и всегда прибегать к неанимированному прямоугольнику на мобильных устройствах.Тем не менее, это означает, что многие мобильные устройства будут пропускать bling bling, который они могут легко сделать

    var pixelAreaThreshold = 200*200;

    var area = (this.bounds[1][0] - this.bounds[0][0]) * (this.bounds[1][1] - this.bounds[0][1]); 

    if(area > pixelAreaThreshold && isMobile()) {
        // <canvas> is very big and may slow down mobile devices
        // (iPod)
        drawUsingCanvas = false;
    }

    var marker;

    if(drawUsingCanvas) {
        // Go for animated polygon if the polygon is small,
        // or if we are using a desktop browser             
        marker = this.drawPolyCanvas(canvas, context)
        marker.addClass("room-marker-animated");
    } else {
        marker = this.drawRectangle();                                                           
    }

1 Ответ

3 голосов
/ 12 июля 2011

Вам, вероятно, нужно разработать какой-то функциональный тест, который запускает соответствующую анимацию, а затем измеряет ее производительность (кадров в секунду или что-то в этом роде) и сохраняет этот результат. Затем вы можете разработать стратегию того, что вы хотите делать на этом устройстве, исходя из измеренной производительности (простая графика в сравнении со сложной графикой и т. Д.).

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

Фактические тесты функций почти всегда лучше, чем попытки определить конкретные устройства, процессоры, тактовые частоты, графические процессоры и т. Д. *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...