The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Изменения для улучшения отображения KDE-приложений в GNOME и Xfce"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Есть идеи по улучшению форума и сайта ? Пишите.
. "Изменения для улучшения отображения KDE-приложений в GNOME и..." +1 +/
Сообщение от Аноним (127), 19-Май-24, 23:45 
Нет не совсем так. В один прекрасный момент наступила страшная путаница с тем кто и что рисует исправлять кашу сели только в 10.

Сначала действительно рисование интерфейса производилось средствами драйвера GDI (векторная графика, рендеринг шрифтов) через вызовы Win32. Оно и сейчас работает. Этот способ отрисовки GUI работает даже тогда, когда у вас в системе не работает 3D и копмозитинг. Исторически разработчики видеокарт должны были предоставить специфический GDI-драйвер для поддержки отрисовки векторной графики, однако современные видеокарты смогут нарисовать всё, что требуется даже на стандартном встроенном драйвере от MS, разве что он не всегда правильно выставит режимы. Под старыми драйверами мониторов и видеокарт имеется в виду оборудование из 90-х.
Затем вместе с первыми версиями .NET Framework появилась абстракция WinForms, которая делает абсолютно то же самое, что и GDI+Win32. Это готовый набор классов и виджетов для работы с MVC. С/С++ тоже поддерживаются.

А вот дальше начинаются усложнения. Windows Presentation Foundation это совершенно другой способ рисовать GUI, который изначально рассчитан на композитные рабочие столы. Вплоть до 2006-го года (Vista) Windows не поддерживал композитный рабочий стол. Поддержка композитинга появилась начиная с Vista с возможностью вернуть старое поведение ("классическая тема" через GDI). Композитный рабочий стол предполагает, что мы рисуем не просто векторную графику во фреймбуфер средствами CPU, а рисуем на поверхность в буфер видеокарты. От этого исчезает двойная буферизация. Для достижения композитнинга на Windows набор разделяемых библиотек пространства пользователя DirectX 9 был реализован как модуль ядра (DirectX 10), а само API было обновлено. Был создан композитный рабочийстол DWM и переведен на использование нового драйвера. При этом старые приложения WinForms продолжали рендериться на програмном буфере на CPU. Чтобы при этом приложение могло использовать GPU и был придуман WPF. Он отрисовывает приложение через DirectX. При этом если драйвер видеоадаптера не установлен или не поддерживает работу с 3D, то реализуется программная эмуляция на CPU, которая сильно медленнее. Помимо прочего WPF создан для паттерна MVVM, хотя MVC тоже можно использовать.

Дальше сложнее. В погоне за глупыми объединениями интерфейсов планшетов и десктопов вышла страшная Windows 8 в которой появился WinRT, которая совместно с другими компонентами стала называться UWP. То есть это API для "магазинных" приложений. Важный момент, который случился в Windows 8 - старый режим обратной совместимости, т.е. некомпозитный рабочий стол был полностью удален и не поддерпживается. Все драйверы были переведены на соответсвующую версию WDDM и теперь нельзя представить ситуацию, что на Windows некомпозитный десктоп без поддержки пусть даже и эмулируемого на процессоре (нет соответствующего 3D ускорителя, как в сервере, например). Однако, это не нашло поддержки у разработчиков "универсальная" платформа оказалась не универсальной. Windows Phone больше нет, планшеты и даже "ультрабуки" - редкость. И вся эта дурацкая идея сделать несовместимым всё API между 7 и 8 всех только раздражала. Да, кто-то писал на этом, но не массово. Основными средствами написания приложений оставались WinForms и WPF.

Windows 10 решает 2 ключевые проблемы:
- .NET Framework депрекейтед. Теперь вместо него просто .NET (он же mono). Все библиотеки переносимы и не прибиты гвоздями к редакции ОС.
- WinRT и его обновленная версия под Win 10 (WinUI2) отвязываются от билда ОС и отвязываются от магазина вовсе, чтобы можно было писать любые приложения на этом API так и приходит WinUI3

Идиотизм Балмера вокруг дурацкого единого API ушел в прошлое, потому что если раньше предполагалось, что WinRT - это единое API которое позволяет создать соплекухуи на десктоп и на планшет, то теперь вместо этого придумана абстракция .NET MAUI (обновленный Xamarin Forms). Разработчик кросплатформенного проекта создаёт абстрактный интерфейс с использованием абстрактынх классов. Реализация же интерфейсов этих абстрактных классов находится в той ОС, на которую таргетится приложение. В Windows это WinUI3, в MacOS это Cocoa итд. Соответственно WinRT->WinUI2->WinUI3 это апгрейды одного и того же. Последняя версия просто работает в отличии от предшествующих версий. И кстати, рендеринг веб-объектов в WinUI3 идет через Google Blink, а не через сами знаете что.

WinForms никуда не девается, а вот WPF планируется в перспективе тоже депрекнуть ввиду того что он не кроссплатформенный и привязан к .NET Framework, а не к mono/.NET. Ну то есть он продолжит работать еще пару десятилетий, но разрабов постепенно отучают от WPF, WCF и прочих старых API времен .NET Framework 2.0.

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Изменения для улучшения отображения KDE-приложений в GNOME и Xfce, opennews, 18-Май-24, 14:13  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру