Опрос
Вы участвуете в программе Windows Insider?
Популярные новости
Обсуждаемые новости

1
Не в сети
Сообщений: 15
Благодарностей: 0
Предупреждений:
Из: Russia
Род занятий: программист

Всем привет. Я прочитал много статей в которых было написано почему GDI+ такой медленный и что в дальнейшем он обязательно будет аппаратно ускорен. Я уже довольно давно являюсь обладателем видео адаптера в спецификации которого чётко написано: поддержка ускорения GDI+ (раньше был GeForce 6600GT, сейчас GeForce 7900GT). И тем не менее ни малейшего ускорения операций отрисовки GDI+ под WinXP замечено не было. Всё продолжает рисовать процессор со всеми вытекающими.... Я очень сильно надеялся что с выходом Windows Vista наконец будет задействовано аппаратное ускорение... Версия библиотеки GDIPlus под WinXP - 5.1.X. В Windows Vista RC1 я обнаружил 2 версии этой библиотеки 5.2.X и 6.0.X, при том какбы я не пересобирал своё приложение (на Visual C++ под Visual Studio 2005) всегда грузилась версия 5.2.X, в которой ускорением и не пахнет... Добится загрузки версии 6.0.X мне так и не удалось (даже после пересборки приложения с новым либом из нового SDK для RC1). Так вот собственно мой вопрос: реализована ли наконец поддержка аппаратного ускорения GDI+ в библиотеке версии 6.0.X в Windows Vista? Если нет, то планируется ли? Почему её невозможно загрузить? Меня очень беспокоят высказывания в официальных статьях, в которых GDI и GDI+ называют нехорошим словом deprecated и говорят что их дальнейшего развития не планируется и что надо срочно переходить на использование Direct3D10. И чтоже в таком случае получается? Если я хочу нарисовать на некой поверхности прямоугольник со сгругленными краями и вырезом неправильной формы в центре, с эффектами антиалиасинга и альфа-блендинга? Ну а как я должен нарисовать на Direct3D линию определенной толщины со стилем DashDot? Я должен сам написать тесселятор??? Совершенно никаких API, способных облегчить построение 2D форм в виде вертекс-буфферов в состав Direct3D10 не входит! Неужели товарищи из Microsoft действительно полагают что 2D векторная графика больше никому не нужна???

#50214   | 08.09.06 12:46
Не в сети
Сообщений: 861
Благодарностей: 0
Предупреждений:
Из: Russia Нижний Тагил
Род занятий: Учусь

Unmoored, версия 6.х - это собственно WPF. Это уже не GDI+. Чтобы включить эту версию нужно поставить свойство Me.AllowTransparency=True.

#50239   | 08.09.06 14:09
Не в сети
Сообщений: 15
Благодарностей: 0
Предупреждений:
Из: Russia
Род занятий: программист

Ммм.. так, наверно я не четко выразился как я использую библиотеку. Я делаю приложение на Visual C++ (не Managed), используя хедер gdiplus.h и классы из неймспейса Gdiplus (Graphics, Pen, Brush). Для того чтобы подтянуть GDIPlus.dll я включаю в проект GDIPlus.lib. В состав Windows SDK для Vista RC1 включен всё тотже набор хедеров Gdiplus 2001 года написания и новый lib 2006 года генерации...
Т.е. так просто её заюзать не выйдет? Ну для использования из под managed языков понятно что нужен .NET Framework 3.0. А как это сделать из под native С++? Не может быть чтоб небыло способа... Может хедеры как-то по другому называются?
Т.е. GDIPlus.dll версии 6.0.* это уже не совсем GDI+? EXEScope показал что эта библиотека экспортирует тотже набор функций...
Вобщем я окончательно запутался... Был бы признателен за разяснения...

#50243   | 08.09.06 14:41
Не в сети
Сообщений: 861
Благодарностей: 0
Предупреждений:
Из: Russia Нижний Тагил
Род занятий: Учусь

Unmoored, может я неправ, но помоему никак. По крайней мере задействовать WPF из native C++ не выйдет это уж точно.

#50251   | 08.09.06 16:17
Не в сети
Сообщений: 15
Благодарностей: 0
Предупреждений:
Из: Russia
Род занятий: программист

Не может быть! У Вас случайно нет знакомого хорошо разбирающегося в содержимом нового SDK и хедеров в него входящих? Мне нужна информация... Расширенная функциональность WPF мне вобщем и не к чему... Мне надо быстрый GDI+....

#50257   | 08.09.06 16:34
Не в сети
Сообщений: 277
Благодарностей: 2
Предупреждений:
Из: Russia
Род занятий:

Unmoored, попробуй написать Espoir(у) в пм.

#50258   | 08.09.06 16:43
Не в сети
Сообщений: 384
Благодарностей: 9
Предупреждений:
Из: Russia Москва
Род занятий:

Для начала есть один вопрос - скачали ли вы полный комплект Windows SDK для Vista и установили ли вы все примеры и справочную информацию относительно Win32-кода?
Если нет - то как минимум попробуйте это сделать - возможно вы найдете в справочных данных точный ответ на свой вопрос.

Теперь касательно версий и т.п. В настоящий момент в Windows Vista создается новая модель графических драйверов. Теоретически для использования преимуществ Vista в плане аппаратного рендеренга драйвер должен быть WDDM. Vista обеспечивает полную совместимость со "старыми" приложениями (т.е. использующими GDI и GDI+, DirectX7,8) - то, есть по сути, содержит те версии библиотек, которые были и в XP. Теперь самое "сладкое" - если это возможно Vista будет подменять версии библиотек автоматически и передавать код приложения на рендеринг видеокарты... Думаю вы понимаете, что это значит для разработчика - практически отсутствие контроля.

Какие есть варианты? - Avalon. Именно он (и скорее всего это будет реализовано только в Vista, но не в ХР) будет автоматически ускоряться вашей видеокартой при отрисовке как 2D так и 3D графики. С учетом того, что он обладает значительно более высокими возможностями в плане 2D нежели чистый DGI+ хорошим рещением было бы изучение способов использования этих библиотек в чистом Win32-коде. Либо, как вариант, совмещение управляемого и неуправляемого кода в проектах C++. С учетом того, что аппаратное ускорение доступно только для Vista, а также того, что Avalon уже входит в ее состав, нет никаких припятствий для распространения таких приложений.

#50374   | 09.09.06 10:04
Не в сети
Сообщений: 15
Благодарностей: 0
Предупреждений:
Из: Russia
Род занятий: программист

Всем спасибо, похоже я докопался до чего хотел. GDI+ действительно похоже развиваться не будет, т.к. в этом нет необходимости. Все классы .NET из Drawing.Drawing2D (Pen, Brush и т.д.) продублированы соответствующими из Windows.Media. Unmanaged хедера я пока не нашел, но по видимому тоже произойдет и с ним. Скорее всего он будет использовать API из Milcore - unmanaged ядра WPF.
И еще - аппаратное ускорение будет доступно и из под WinXP с установкой .NET Framework 3.*. Вернее оно доступно уже сейчас на картах с поддержкой DirectX9 API.

#50428   | 09.09.06 17:09
Все права принадлежат © ms insider @thevista.ru, 2022
Сайт является источником уникальной информации о семействе операционных систем Windows и других продуктах Microsoft. Перепечатка материалов возможна только с разрешения редакции.
Работает на WMS 2.34 (Страница создана за 0.038 секунд (Общее время SQL: 0.014 секунд - SQL запросов: 76 - Среднее время SQL: 0.00019 секунд))
Top.Mail.Ru