Как делает Photoshop (Или графические редакторы) копирование битового массива?

Я готовлюсь подавать заявку рисунка в Windows. Я просто задаюсь вопросом, графические редакторы имеют битовый массив памяти, который они блокируют, затем устанавливают каждый пиксель, затем блитируют?

Я не понимаю, как Photoshop может переместить целые слои без задержки или мерцание, не используя аппаратное ускорение. Также в программе как Дизайн Выражения, я мог иметь 200 форм и переместить их внезапно без задержки. Я действительно задаюсь вопросом, как это может быть сделано без справки GPU.

Кроме того, я не думаю, что супер эффективные алгоритмы могли выровнять по ширине это?

8
задан David 'mArm' Ansermot 23 May 2016 в 08:02
поделиться

3 ответа

Посмотрите на этот вопрос:

Уменьшение мерцания с помощью GDI+ и C++

Все, что вы можете сделать о рисовании DC без GPU - это уменьшить мерцание. Все остальное зависит от скорости заполнения битовой карты памяти. И здесь вы можете использовать эффективные алгоритмы, многопоточность и все, что вам нужно.

1
ответ дан 6 December 2019 в 00:54
поделиться

Двойная (или более) буферизация - это то, как это делается в играх, где мы втягиваем тонны дерьма в «задний» буфер, пока отображается «передний» буфер. Затем, когда отрисовка завершена, буферы меняются местами (замена указателя, а не копии!), И процесс продолжается в новом переднем и заднем буферах.

Тройная буферизация предлагает еще один бонус в том, что вы можете начать рисовать два кадра с этого момента, когда будет готов следующий кадр, но без принудительной замены буфера в середине обновления экрана. Во многих играх замена буфера выполняется в середине обновления, но иногда это можно увидеть как видимые артефакты (разрыв) на экране.

В любом случае - для приложения, отрисовывающего растровые изображения в окне, если у вас есть "медленная" операция, сделайте это в не отображаемом буфере при представлении отображаемой версии в API визуализации, например GDI. Позвольте системному программному обеспечению выполнять все модные обновления.

1
ответ дан 6 December 2019 в 00:54
поделиться

Конечно, современный Photoshop использует ускорение графического процессора , если оно доступно. Другой возможный инструмент - DMA . Вам также может быть полезно прочитать исходный код существующих программ, таких как GIMP .

1
ответ дан 6 December 2019 в 00:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: