Страницы

Поиск по вопросам

суббота, 21 декабря 2019 г.

Работа с картинками через GDI+ VS DirectX

#c_sharp #net #directx #gdi #gdi+


Допустим, имеется задача преобразовать N картинок из одного формата в другой, с последующей
сменой размера картинок, уменьшение качества картинок и т п вещи.

Имеется ПК с Core i5 и видеокарта, которая поддерживает DirectX 9 с 512 МБ ОЗУ.

Интересует следующее:


Выполнится конвертирование через DirectX быстрее, чем через GDI+ ?
Предоставляет ли .NET какие-то обертки над DirectX, похожие на GDI+ по юзабельности?
Я знаю, что WPF использует для отрисовки аппаратное ускорение. Можно ли воспользоваться
какими-то его примитивами.
Какой подход используется в популярных пакетных конвертировщиках?
Они используют GDI+ или пишут свое более быстрое решение, которое не использует GDI+(Т.е
опять же CPU зависимые) или используют аппаратные возможности?

    


Ответы

Ответ 1



По сути я могу ошибаться, но скажу следующее: Приходилось работать с изображениями, с их генерацией, и в наследие доставался код на WinForms (с отрисовкой на GDI+), из которого сразу было решено выпилить любое упоминание WinForms и сделать всё это на том, что есть в WPF. 1) Работать стало быстрее, а если еще, как вы говорите конвертацию - сделайте её в пуле потоков Parallel.ForEach(); Тогда вообще будет очень хорошо. Только про потокобезопасность не забывайте. 2) Да, представляет. Может не в таком обилии как GDI+, но стоит разобраться и вам этого достаточно будет. Можно дополнить сторонними библиотеками на крайний случай. 3) Они используют как и CPU, так и GPU. Вообще использованием ресурсов занимается сам DX и пиковой производительности добиваются их совместным использованием. PS. Если я в чём-то не прав, то критика приветствуется.

Ответ 2



Как раз таки, DirectX использует аппаратное ускорение, у GDI с этим проблемы. .NET с шарпом имеют SharpDX - это как раз что то вроде обертки над DirectX, юзать не сказать что удобно, но в сравнении с тем же на Си++ разница чувствуется.

Комментариев нет:

Отправить комментарий