Wie geht Photoshop (oder Zeichenprogramme) blit?

8

Ich bereite mich darauf vor, eine Zeichenanwendung in Windows zu erstellen. Ich frage mich nur, haben Zeichenprogramme eine Speicherbitmap, die sie sperren, dann setzen Sie jedes Pixel, dann blit?

Ich verstehe nicht, wie Photoshop ganze Layer ohne Verzögerung oder Flicker ohne Hardware-Beschleunigung bewegen kann. Auch in einem Programm wie Expression Design könnte ich 200 Formen haben und sie ohne Verzögerung auf einmal verschieben. Ich frage mich wirklich, wie das ohne GPU-Hilfe gemacht werden kann.

Ich glaube auch nicht, dass super-effiziente Algorithmen das rechtfertigen könnten?

    
jmasterx 20.05.2010, 01:26
quelle

3 Antworten

1

Sehen Sie sich diese Frage an:

Verringern Sie das Flimmern mit GDI + und C ++

Alles, was Sie beim DC-Zeichnen ohne GPU tun können, ist das Flackern zu reduzieren. Alles andere hängt von der Geschwindigkeit ab, mit der Ihre Speicherbitmap gefüllt wird. Und hier können Sie effiziente Algorithmen, Multithreading und was immer Sie brauchen, verwenden.

    
Eugene 20.05.2010, 02:25
quelle
1

Sicherlich verwendet moderner Photoshop die GPU-Beschleunigung , falls verfügbar. Ein anderes mögliches Werkzeug ist DMA . Sie können es auch hilfreich finden, den Quellcode bestehender Programme wie GIMP zu lesen.

    
Matthew Flaschen 20.05.2010 01:29
quelle
1

Double (oder mehr) Pufferung ist die Art, wie es in Spielen gemacht wird, wo wir eine Menge Mist in einen "Zurück" -Puffer zeichnen, während der "Front" -Puffer angezeigt wird. Dann, wenn die Verlosung abgeschlossen ist, werden die Puffer ausgetauscht (ein Pointer-Swap, keine Kopien!) Und der Prozess wird in den neuen vorderen und hinteren Puffern fortgesetzt.

Die dreifache Pufferung bietet einen weiteren Vorteil: Sie können ab dem nächsten Frame jetzt zwei Frames von jetzt an zeichnen, ohne einen Pufferwechsel in der Mitte der Bildschirmaktualisierung zu erzwingen. Bei vielen Spielen wird der Puffer mitten in der Aktualisierung ausgetauscht, aber manchmal können Sie ihn als sichtbare Artefakte (Zerreißen) auf dem Bildschirm sehen.

Wie auch immer - für eine App, die Bitmaps in ein Fenster zeichnet, wenn Sie eine "langsame" Operation haben, tun Sie dies in einen nicht angezeigten Puffer, während die angezeigte Version der Rendering-API präsentiert wird, z. GDI. Lassen Sie die System-Software alle Updates durchführen.

    
dash-tom-bang 20.05.2010 02:35
quelle

Tags und Links