2013-03-02 3 views
4

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

Структура отслеживает «грязные» ары экрана, которые могли бы быть изменены. Если объект перекрывается с такой областью, то он перерисовывается. Во-первых, однако, контекст привязан только к грязной области.

Это быстрее, чем просто перерисовать изображение целиком? Как насчет того, если объект визуализируется через более сложную серию команд холста?

e: Подумав об этом еще немного, я понял, что причина в том, что отсечение является жизненно важным в контексте игровой среды, независимо от производительности. Мне все еще любопытно об этом, поэтому я оставлю вопрос таким, как есть.

+0

Интересный вопрос. Посмотрим вперед, чтобы увидеть ответы/предложения. –

+0

Из любопытства, почему мой последний вопрос отредактировал? – starwed

+1

Я бы подумал, что это будет зависеть от многих вещей, в том числе от видеокарты и двигателя JS. Я обнаружил, что прикосновение к контексту много в Firefox может иметь серьезные последствия для производительности, но, к примеру, Chrome просто прекрасен. –

ответ

0

Ну, с одной стороны, вы экономите время, не отдавая объекты, которые не пересекаются с грязными областями. Но, с другой стороны, вы теряете время, потому что отпечатки холста с отсечением медленнее.

Некоторые браузеры (Chrome) отслеживают область холста, в которую вы нарисовали, и обновляете только ту часть экрана. Это также экономит время.

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

Смежные вопросы