Seite 1 von 1

Schnelle Zeichenbibliothek

Verfasst: 26.03.2013 14:20
von Lambda
Kann da jemand etwas empfehlen? (Plattform unabhängig) Mir geht es hauptsächlich um die Zeichnung von Images um das Canvas etwas/deutlich zu beschleunigen. Ein sehr deutliches Beispiel wäre die msimg32 Library, welche Farbverläufe selbst bei Vollbild extrem schnell darstellt, wohingegen ein PB Farbverlauf die Anwendung gleich ins stolpern und flackern bringt.

Re: Schnelle Zeichenbibliothek

Verfasst: 26.03.2013 18:58
von cxAlex
Cairo? Dafür gibts sogar schon einen PB-Wrapper.

Re: Schnelle Zeichenbibliothek

Verfasst: 26.03.2013 19:49
von Lambda
Kenne ich bereits, ist allerdings viel zu langsam. (jetzt keine genaueren Tests) Aber wohl eher vergleichbar mit GDI+. Wie gesagt, allein durch Images kann schon 90% realisiert werden. :D

Re: Schnelle Zeichenbibliothek

Verfasst: 27.03.2013 08:34
von Shardik
Der große Vorteil von Cairo gegenüber GDI+ besteht darin, dass es plattformübergreifend einsetzbar ist, denn man kann es neben Linux (wo es sowieso zur Grundausstattung gehört, weil GTK es ab Version 2.8 für alle Zeichenoperationen einsetzt) auch in Windows und MacOS X nutzen.

Re: Schnelle Zeichenbibliothek

Verfasst: 27.03.2013 08:40
von Lambda
Mir sind die Eigenschaften von Cairo bekannt, mir geht es aber hauptsächlich um Geschwindigkeit bei Images. Am besten logischerweise kombinierbar mit den PB internen StartDrawing(..), um z.B die Blend-Modes umzuschalten.

Re: Schnelle Zeichenbibliothek

Verfasst: 27.03.2013 10:03
von STARGÅTE
blöde frage, aber wieso findest du die Drawing2D-Image sachen eigentlich zu langsam (du bist ja scheinbar nicht der einzige)?
Klar ist es nicht für Echtzeit-Rendern von gezoomten Images mit 60FPS auf Full-HD gedacht.
Aber sowas ist ja bei einer GUI auch garnicht nötig.

Die Oberfläche wird halt einmal komplett gerändert, und danach nur noch die Objekte die sich ändern aktualisiert.
Zusätzlich kannst du Buffer-Images nutzen, um komplizierte Elemente als Block zu rendern, und nicht immer einzeln zusammen zu bauen.

Die Drawing2D-Lib bietet ja sogar den "Nachteil" (der zum Vorteil wird), dass sie kein Antialiasing durchführt.

Re: Schnelle Zeichenbibliothek

Verfasst: 27.03.2013 11:06
von Lambda
STARGÅTE hat geschrieben:blöde frage, aber wieso findest du die Drawing2D-Image sachen eigentlich zu langsam
Da es die CPU bei großen Flächen mit vielen recht kleinen Tiles sehr belastet. Wie du selbst beim GTL gemerkt hast. Durch das Double-Buffering des Canvas wirkt es auch im Vollbild sehr schnell, belastet die CPU aber sehr. Man kann es effizient gestalten wie man will, wenn die CPU zwischen 0-10% schwankt ist das (nur für ein Steuerelement) nicht akzeptabel. :D
STARGÅTE hat geschrieben: Die Oberfläche wird halt einmal komplett gerändert, und danach nur noch die Objekte die sich ändern aktualisiert.
Zusätzlich kannst du Buffer-Images nutzen, um komplizierte Elemente als Block zu rendern, und nicht immer einzeln zusammen zu bauen.
Buffer nutze ich bei komplexen Elementen schon, aber ändern tut sich meist alles. Beim scrollen sowieso - größte Last, aber manche Bereiche müssen einfach neu gezeichnet werden, wenn es sonst zu Überlagerungen führt.

Das GTL z.B ist längst sehr effizient aufgebaut und rendert nur aktive sichtbare Bereiche. Es würde schon ein schneller Plattform unabhängiger Bild-Zeichner reichen.

Re: Schnelle Zeichenbibliothek

Verfasst: 27.03.2013 13:01
von STARGÅTE
cOoki3druqs hat geschrieben:Da es die CPU bei großen Flächen mit vielen recht kleinen Tiles sehr belastet.
Natürlich tut sie das, wäre ja schimm wenn nicht, dann würde Drawing2D ja "Zeit verschwenden". :?
cOoki3druqs hat geschrieben:Man kann es effizient gestalten wie man will, wenn die CPU zwischen 0-10% schwankt ist das (nur für ein Steuerelement) nicht akzeptabel.
Hää, im Ruhezustand (keine Events) sollte die CPU 0% haben, bei reinen Maus-Event sollte die CPU immer noch nahe bei 0% liegen, da ja nichts neu gezeichnet werden muss, außer ggf. Hovers.
Und nur dann wenn zB das Fenster Resized wird, dann sollte die CPU sehr wohl eine Spitzenleistung von 100% erreichen, um die Sache schnell erledigt zu haben.
cOoki3druqs hat geschrieben:Das GTL z.B ist längst sehr effizient aufgebaut und rendert nur aktive sichtbare Bereiche. Es würde schon ein schneller Plattform unabhängiger Bild-Zeichner reichen.
Hm, dann solltest du vielleicht überlegen auf OpenGL umzusteigen um das ganze wirklich über die Grafikkarte laufen zu lassen. OpenGL benötigt auch nicht zwangsweise eine PB-Screen, sondern kann auch auf einem Window oder halt Canvas rendern. Du musst dich natürlich mit der OpenGL-API auseinandersetzen, aber diese ist zumindest auch Cross-Plattform.
Im übrigen hab ich dir das schon im Januar gesagt, wo du genau die gleiche Frage gestellt hast: Schnelle Zeichenbibliothek

Re: Schnelle Zeichenbibliothek

Verfasst: 27.03.2013 13:41
von Lambda
STARGÅTE hat geschrieben: Natürlich tut sie das, wäre ja schimm wenn nicht, dann würde Drawing2D ja "Zeit verschwenden". :?
Also komm :D , ich meine natürlich mit sehr mehr als andere Lösungen es würden.

Auch klar ist, dass es im "Ruhezustand" bzw keiner größeren Neuzeichnung die CPU nicht sonderlich bis gar nicht belastet. Aber es reicht ja bereits teils großflächig neu zu zeichnen. Im Grunde das selbe Thema wie mit GDI+, nur das PB natürlich wesentlich schneller ist, nur nicht schnell genug.