Повлияет ли использование градиентов на производительность WP7? - PullRequest
3 голосов
/ 22 марта 2011

Мой коллега предложил мне избегать использования каких-либо градиентов в моих мобильных приложениях, потому что телефоны не могут справиться с рабочей нагрузкой, необходимой для рендеринга градиентов на кнопках / фонах и т. Д. Я не видел никаких зависаний или чего-либо еще при рендеринге кнопок, но есть ли градиенты, которых мне следует избегать?

Ответы [ 3 ]

4 голосов
/ 22 марта 2011

Это зависит от того, где вы его используете.Если вы сравниваете SolidColorBrush с курсом GradientBrush, платформа визуализирует градиент еще больше работы, но это незначительная разница в производительности.

Единственный случай, о котором я могу подумать, это предположить, что вы используетесложный градиент в большом ListBox и использовал его внутри ListBoxItems, что позволяет создавать экземпляры многих градиентов.В этом случае я бы предпочел заменить градиент на JPEG низкого качества.JPEG (изображение) автоматически даст мне больше системного кеширования, и список будет работать лучше, чем вы, предоставив в нем векторный градиент.

Но если это отдельные кнопки или какой-то другой стиль управления, то вполне нормальноиспользовать градиенты.

Дополнительные советы такого рода можно найти в моем блоге здесь - http://jobijoy.blogspot.com/2011/05/wp7dev-tip-2-few-things-to-remember-on.html

3 голосов
/ 22 марта 2011

Я не понимаю, почему градиенты влияют на производительность, но градиенты плохо отображаются на многих экранах WP7, поскольку они оптимизированы для метро, ​​которое не поддерживает градиенты. Я видел цветную полосу на HTC Trophy, который мы использовали для прототипа

0 голосов
/ 25 марта 2011

Использование градиентов - линейных или радиальных - не должно оказывать заметного влияния. Это не значит, что это не так.

WP7 Silverlight основан на обычном Silverlight, который, в свою очередь, основан на WPF. В WPF линейные градиенты оказывают заметное влияние при интенсивном использовании, а радиальные градиенты по любой причине оказывают довольно большое влияние. Итак, если посмотреть на историю и родословную, это может оказать существенное влияние при частом использовании.

Тем не менее, если учесть, какую работу GPU фактически должен выполнить, чтобы нарисовать их, то линейный и радиальный градиенты близки к одинаковому объему работы и могут быть оптимизированы для использования очень небольшого количества инструкций шейдера. Я получил линейное уменьшение до 4 (1, если базовый граф сцены позволяет модифицировать вершины) и радиальное до 5 (4, если я могу изменить вершины, даже 3 в, вероятно, большинстве случаев). Оба эти шейдера довольно тривиальны. Это означает, что не должно иметь какое-либо реальное влияние. Возможно, это то, что Microsoft может оптимизировать в какой-то момент.

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