Введение: почему вывод GDI для 2D-графики остается актуальным
Перво-наперво: если вы еще не читали 2D, ускорение и Windows: разве не все видеокарты равны?, пожалуйста, не стесняйтесь сначала проверить это, так как это исследование истории от части 1 до части 2. 2D в Windows и текущие проблемы, наблюдаемые на высокопроизводительных дискретных видеокартах.
Во второй части мы сосредоточимся на значимости GDI, более подробно расскажем о выводе 2D-графики и представляем вам наш тест 2D (для тех, кто еще не нашел его на Tom’s Hardware DE). Чтобы полностью понять результаты этого теста, мы должны сначала изучить некоторые связанные теоретические основы.
Почему мы до сих пор тестируем GDI в эпоху Windows 7 и Direct2D?
В первой части этой серии статей некоторые читатели предположили, что с появлением видеокарт с поддержкой DirectX 10 и Windows Vista старые методы GDI для вывода 2D-графики устарели. WPF (Windows Presentation Foundation) вместе с Direct2D уже некоторое время доступны разработчикам Microsoft. Тем не менее, существует множество веских причин, по которым GDI (интерфейс графического устройства) остается бесспорно значимым и актуальным, а это означает, что мы должны изучить его поведение и производительность даже в дивном новом мире Windows 7. Эти причины включают в себя:
GDI по-прежнему поддерживает старые видеокарты, в то время как Direct2D требует карт, поддерживающих DirectX 10 или выше.
GDI поддерживается во всех известных версиях Windows, тогда как Direct2D доступен только в Windows Vista и Windows 7.
Каждое графическое приложение, работающее под Windows XP (и более ранние версии Windows), использует GDI.
Многие разработчики программного обеспечения сопротивляются преобразованию своего программного обеспечения со старых API на новые. Даже сегодня многие разработчики продолжают обращаться к одним и тем же хорошо понятным программным библиотекам, даже если доступны более новые технологии. Преобразование одной библиотеки в другую также означает переписывание и повторное тестирование всех затронутых модулей кода. Поскольку улучшения производительности, возникающие в результате преобразования старой библиотеки в новую, могут быть едва заметными, разработчики программного обеспечения также воздерживаются от внесения таких изменений по чисто экономическим соображениям (слишком много времени и усилий для слишком малого результата). Если взять реализацию Direct2D в различных компонентах Mozilla Firefox в качестве иллюстративного примера, вы почувствуете неторопливость отрасли в выполнении этого процесса преобразования. Кроме того, для многих из этих фирм было бы формой бизнес-самоубийства запретить всему сообществу пользователей XP доступ к их последним выпускам. Все это приводит к одному убедительному выводу: GDI, скорее всего, будет существовать до тех пор, пока Windows XP не перестанет представлять какой-либо значительный компонент сообщества конечных пользователей.
Тогда есть технические причины, объясняющие живучесть GDI. Ключевые модули кода GDI (те, которые чаще всего включаются и вызываются в приложениях Windows) не являются полностью переносимыми. Direct2D также потребляет значительную вычислительную мощность и системные ресурсы, но не может делать ничего такого, чего не может дать Direct3D. И те, кто решил пропустить использование Direct3D, обычно очень тщательно обдумывали это решение. Кроме того, GDI работает независимо от используемых устройств вывода, таких как мониторы или принтеры. Таким образом, одна и та же подпрограмма в программе может отображать графику на мониторе и выводить ее на принтер, тем самым уменьшая код (и его последующее обслуживание и риск ошибок) наполовину. В настоящее время многие из самых доступных принтеров являются устройствами GDI, и эта ситуация вряд ли изменится в ближайшее время.
Целое больше, чем сумма всех частей
Мы сами рассматриваем переход на WPF и Direct2D как шаг, навязанный Microsoft, и как необратимый технический шаг вперед. Но те, кого беспокоят новые технологии, должны вспомнить предыдущие представления, о которых мы расскажем в этой статье. Включая Windows XP, существует более чем достаточно устаревших технологий, и вы действительно можете смотреть в будущее только в том случае, если готовы игнорировать прошлое. Но, увы, это игнорирует реалии, в которых работает большинство пользователей, такие как известная фобия для Windows XP, проявляемая встроенными графическими чипами 780G и 785G.
Мы хотим вернуться к нашим тестам из части 1 здесь, но на этот раз мы будем использовать наше собственное специально разработанное программное обеспечение (читатели также могут загрузить этот инструмент с нашего сайта и запустить его на своих ПК). Мы увидим, что даже самые дорогие видеокарты не проходят некоторые из этих тестов, если на них влияют драйверы, которые не были оптимизированы для того, что многие люди считают устаревшей технологией.