Wieso werden 2d Vektorzeichen- bzw. Bildbearbeitungsprogramme nicht direkt mit OpenGL realisiert?



  • Es gibt ja 2d Vektorprogramme wie Inkscape, Sodipodi, Adobe Illustrator, CorelDraw, MS Visio oder Scribus, aber keines davon nutzt OpenGL oder Direct3d, zumindest nicht direkt.

    Alle nehmen ein normales 2d Fenster als Zeichenoberfläche und darin zeichnen sie dann ihre 2d Vektorprimitiven.

    Hat das irgendeinen Grund?

    Gut, man braucht weniger Speicher, da OpenGL und Direct3d ja noch die dritte Dimension kennen und eventuell ist es auch auf einer reinen 2d Ebene einfacher, aber ansonsten hat das doch gar keine Vorteile.
    Das Anwendungsprogramm ist langsamer, weil der Rechner fast alles auf der CPU machen muß.
    Mit OpenGL oder Direct3d könnte man diese ganzen Zeichenprimitiven ja alle auf der GPU rendern und mit 3d Support und den Funktionen der OpenGL/Direct3d API könnte man ja noch viele starke Funktionen nutzen die schnell auf der GPU gerendert werden.

    Warum nutzt man für solche Programme also keine 3d API wie OpenGL/Direct3d?
    Was ist der Grund dafür?



  • man braucht weniger Speicher, da OpenGL und Direct3d ja noch die dritte Dimension kennen

    Falsch!

    Das Anwendungsprogramm ist langsamer, weil der Rechner fast alles auf der CPU machen muß

    Welche Geschwindigkeitssteigerung erwartest du?

    Zeichenprimitiven ja alle auf der GPU rendern

    Aber reines Anzeigen ist uninteressant, ich will es ja auch irgendwann abspeichern. Darueber hinaus hat nicht jeder eine schnelle Grafikkarte.



  • 2d Grafik mit 3d API? schrieb:

    Warum nutzt man für solche Programme also keine 3d API wie OpenGL/Direct3d?
    Was ist der Grund dafür?

    Tut man doch eh (liegt ja z.B. bei Browsern doch grad voll im Trend)!? WPF, Direct2D, Cairo, ...



  • knivil schrieb:

    man braucht weniger Speicher, da OpenGL und Direct3d ja noch die dritte Dimension kennen

    Falsch!

    Na ohne Begründung ist das ziemlich wertlos.

    Vereinfachtes Beispiel:

    2d Grafik:
    int x, y; // fertig

    3d Grafik:
    int x, y, z; // Ein int mehr.

    Und du behauptest nun, daß man nicht mehr Speicher braucht.

    Das Anwendungsprogramm ist langsamer, weil der Rechner fast alles auf der CPU machen muß

    Welche Geschwindigkeitssteigerung erwartest du?

    Kommt doch ganz darauf an was du renderst.
    Bei x Millionen Strichen dürfte die GPU sicher vorne liegen.

    Zeichenprimitiven ja alle auf der GPU rendern

    Aber reines Anzeigen ist uninteressant, ich will es ja auch irgendwann abspeichern.

    Du willst nicht nur Anzeigen, du mußt auch scrollen und zoomen können.
    Abspeichern ist nicht das Problem.

    Darueber hinaus hat nicht jeder eine schnelle Grafikkarte.

    Doch, eigenlich schon.

    Heute zersägt jede Low End GPU die CPU, wenn es um Grafikprimitive geht
    und eine 3d GPU findet man heute in jedem Rechner der nicht älter als sagen wir mal 10 Jahre ist.

    Die letzte reine 2d Grafikkarte war AFAIK die ET6000, das ist schon > 15 Jahre her.



  • dot schrieb:

    2d Grafik mit 3d API? schrieb:

    Warum nutzt man für solche Programme also keine 3d API wie OpenGL/Direct3d?
    Was ist der Grund dafür?

    Tut man doch eh (liegt ja z.B. bei Browsern doch grad voll im Trend)!? WPF, Direct2D, Cairo, ...

    Eigentlich nicht.

    Programme die auf Toolkits aufbauen, die auf 3d umgebaut wurden, ja, also z.B. Qt (mit was eigenem) und GTK+ mit Cairo aber sonst?
    Die großen Browserprojekte kann man ja wohl schlecht als allgemeines Beispiel für die gesamte IT Branche nehmen.



  • 2d Grafik mit 3d API? schrieb:

    Die großen Browserprojekte kann man ja wohl schlecht als allgemeines Beispiel für die gesamte IT Branche nehmen.

    Denn das ist etwa so, als würde man sagen, daß heute jedes Einfamilienhaus 400 m hoch in den Himmel gebaut wird, weil es eben den Sears Tower (Browser) und Co gibt.



  • 2d Grafik mit 3d API? schrieb:

    Und du behauptest nun, daß man nicht mehr Speicher braucht.

    2D Koordinaten reichen mir für 2D-OpenGl völlig aus. Warum behauptest du so einen Müll?



  • 2d Grafik mit 3d API? schrieb:

    Programme die auf Toolkits aufbauen, die auf 3d umgebaut wurden, ja, also z.B. Qt (mit was eigenem) und GTK+ mit Cairo aber sonst?
    Die großen Browserprojekte kann man ja wohl schlecht als allgemeines Beispiel für die gesamte IT Branche nehmen.

    Naja, aber man tut es ja eben doch. Dauert eben bis jeder umgestellt hat, vor allem wohl wenn es keinen Vorteil bringt der sich finanziell auszahlt...

    2d Grafik mit 3d API? schrieb:

    knivil schrieb:

    man braucht weniger Speicher, da OpenGL und Direct3d ja noch die dritte Dimension kennen

    Falsch!

    Na ohne Begründung ist das ziemlich wertlos.

    Vereinfachtes Beispiel:

    2d Grafik:
    int x, y; // fertig

    3d Grafik:
    int x, y, z; // Ein int mehr.

    Und du behauptest nun, daß man nicht mehr Speicher braucht.

    Na wie da oben steht: Für 2d Grafik brauch ich zwei Koordinaten um einen Punkt zu beschreiben. Inwiefern brauch ich da denn deiner Meinung nach mehr Speicher als was? Ich glaub dir ist nicht ganz klar wie die sog. "3d-APIs" funktionieren. Nur weil man oft "3d-API" sagt, heißt das noch lange nicht dass die API einfach nur nen Haufen 3d Koordinaten bekommt und dann was für dich malt. Vor allem wenn es sich um eine moderne API handelt (z.B. D3D11), wird es dir sehr schwer fallen auch nur eine einzelne Funktion zu finden, die 3d Koordinaten erwartet, oder sonst irgendwie auch nur einen blassen Schimmer davon hätte, was 3d Koordinaten überhaupt sein sollten (im Fall von D3D11 existiert keine solche Funktion). Ist auch nicht weiter verwunderlich, wenn du mal überlegst wie 3d Grafik funktioniert und was die Grafikkarte macht. Weder API noch GPU wissen eigentlich was 3d Koordinaten überhaupt sind. Denn am Ende tun die nur Dreiecke malen. Ob du die Koordinaten der Eckpunkte dieser Dreiecke nun bestimmst, indem du 3d Punkte auf den Bildschirm projizierst, Zufallszahlen berechnest, oder Weltraumhintergrundstrahlung interpretierst, ist sowohl GPU als auch API absolut egal.


  • Mod

    es waere ausserst nett wenn ihr hier in einem zivilisierten ton miteinander umgeht. gracie.

    ich glaube das neuste photoshop hat ein paar gpu beschleunigte dinge. ich glaube musemage und fireworks hatten auch gpu beschleunigung.

    es gibt viele gruende weshalb es sich nicht durchgesetzt hat (bisher)
    -es gibt noch sehr viel hardware, gerade notebooks, ohne gute gpus bzw ohne gute treiber.
    -dann muesste man es zweimal schreiben.
    -es reicht ja nicht einen kleinen effekt auf der gpu durchzufuehren, weil dann der transfer hin und zurueck zulange dauert, man muss also zwei pipelines haben
    -gerade wenn menschen professionell mit bildbearbeitung umgehen und davon einen nutzen haetten, haben sie unmengen von daten (nicht umsonst hat photoshop eine eigene auslagerungsdatei und ich kenne graphiker die eine SSD nur zu diesem zweck haben). da erstellst du mal eine 16k x 16k textur mit 16bit und 10 layern und bist bei 20GB und was macht die graphikkarte dann?

    dass es zZ mit browsern im kommen ist, liegt daran, dass websites aufwendiger werden, waehrend CPUs langsammer werden (jedenfalls das untere ende das man auch bedienen will). und dann bleibt vielen nichts anderes als die gpu noch dazu zu nutzen, ein ATOM der in software scroll waehrend da 10 flash banner blinken geht in die knie.


Log in to reply