Library für (vektor-)grafik



  • Hallo,

    Ich suche eine 2D-Grafik-Bibliothek für Java. Im Prinzip brauche ich nicht mehr als Strecken und Polygone. Das ganze sollte halbwegs performant sein (also flüssig einige tausend Kanten und Polygone gleichzeitig in unterschiedlichen Farben darstellen), aber vor allem auch einfach zu benutzen. Reicht da irgendeine Standard-Komponente von Java, oder sollte ich was anderes nehmen?


  • Mod

    Inwiefern brauchst Du etwas, das über die Fähigkeiten von Swing hinausgeht?



  • Keine Ahnung. Ich frage, weil ich nicht sicher bin, ob die Performance von Swing für meine Zwecke ausreicht. Eventuell wird es auch um einige zehntausend Kanten gehen. Unter C++ habe ich mal was ähnliches direkt mit OpenGL gemacht. Nun suche ich nach einer Bibliothek, die ähnliches erlaubt, leicht zu benutzen ist und nicht allzuviel langsamer. Wenn die Antwort "Swing" lautet, ist mir das auch recht.


  • Mod

    Swing wurde in den letzten Jahren wesentlich beschleunigt und nutzt intern inzwischen auch OpenGL oder DirectX, abhängig davon, auf welcher Plattform Du Dich befindest. Du kannst Swing praktisch als zusätzliche Abstraktionsschicht ansehen. Aber ich kann Dir auch nicht verraten, ob Swing für Dich schnell genug ist. Das müsstest Du einfach mal ausprobieren.

    Ansonsten kannst Du OpenGL natürlich auch direkter nutzen. Zum Beispiel mit den Java Bindings for OpenGL oder der Entwicklungsvariante (JOGL) davon.



  • Jester schrieb:

    Ich suche eine 2D-Grafik-Bibliothek für Java. Im Prinzip brauche ich nicht mehr als Strecken und Polygone. Das ganze sollte halbwegs performant sein (also flüssig einige tausend Kanten und Polygone gleichzeitig in unterschiedlichen Farben darstellen), aber vor allem auch einfach zu benutzen. Reicht da irgendeine Standard-Komponente von Java, oder sollte ich was anderes nehmen?

    eigentlich sollte das reichen: http://java.sun.com/docs/books/tutorial/2d/index.html
    (ist beim jdk mit dabei)
    🙂



  • ;fricky schrieb:

    eigentlich sollte das reichen: http://java.sun.com/docs/books/tutorial/2d/index.html
    (ist beim jdk mit dabei)
    🙂

    Bitte hör auf damit, massig Threads mit 0815-Google-Resultaten zuzumüllen, ohne Dir anzusehen, wonach der OP gefragt hat bzw. ohne das zu verstehen oder darauf einzugehen.

    Dass Java2D performancetechnisch äußerst mühsam sein kann, ist nicht unbedingt eine Neuigkeit. Lass lieber Gregor antworten, wenn Du selbst nichts genaues weißt.



  • nman schrieb:

    Bitte hör auf damit, massig Threads mit 0815-Google-Resultaten zuzumüllen, ohne Dir anzusehen, wonach der OP gefragt hat bzw. ohne das zu verstehen oder darauf einzugehen.

    das war nicht google, sondern die sun seite.

    nman schrieb:

    Dass Java2D performancetechnisch äußerst mühsam sein kann, ist nicht unbedingt eine Neuigkeit.

    wieso meinste es ist zu langsam? java2D kann auch openGL nutzen.

    nman schrieb:

    Lass lieber Gregor antworten...

    hat er doch schon getan. dagegen hab' ich ja nix.
    🙂



  • ;fricky schrieb:

    wieso meinste es ist zu langsam? java2D kann auch openGL nutzen.

    Erfahrungswerte. Wenn Du Google fragst, findest Du auch viele entsprechende Erfahrungsberichte.

    Google-Ergebnisse und Stdlib-Seiten findet jeder, der es geschafft hat, sich hier zu registrieren auch ohne Dein Zutun.



  • nman schrieb:

    ;fricky schrieb:

    wieso meinste es ist zu langsam? java2D kann auch openGL nutzen.

    Erfahrungswerte.

    aber bestimmt nicht deine, oder? wenn ja, haste bestimmt was falsch gemacht.

    nman schrieb:

    Wenn Du Google fragst, findest Du auch viele entsprechende Erfahrungsberichte.

    aber wenn ich direkt auf die sun-seite gehe, finde ich z.b das: http://java.sun.com/j2se/1.5.0/docs/guide/2d/new_features.html#ogl
    🙂



  • ;fricky schrieb:

    aber bestimmt nicht deine, oder? wenn ja, haste bestimmt was falsch gemacht.

    Doch, meine. Schön, dass Du ohne weitere Fragen weißt, dass ich was falsch gemacht habe.

    aber wenn ich direkt auf die sun-seite gehe, finde ich z.b das: http://java.sun.com/j2se/1.5.0/docs/guide/2d/new_features.html#ogl
    🙂

    JOGL war letzten Endes trotzdem um Größenordnungen schneller. Sowohl unter GNU/Linux mit Nvidia-Treibern, als auch mit WinXP (irgendeine ATI-Karte), obwohl wir natürlich Java 1.5 benutzten. War auch kein Einzelfall, andere Gruppen hatten ähnliche Ergebnisse.

    Wie gesagt, die Details halte ich für weniger spannend. Interessant hier ist: Hör endlich auf, ohne Erfahrung und jegliche Vorkenntnisse einfach irgendwelche komplett frisch ergoogelten Sachen zu posten, ohne zumindest darauf hinzuweisen, dass Du keine Ahnung hast.



  • nman schrieb:

    ;fricky schrieb:

    aber bestimmt nicht deine, oder? wenn ja, haste bestimmt was falsch gemacht.

    Doch, meine. Schön, dass Du ohne weitere Fragen weißt, dass ich was falsch gemacht habe.

    wenn unter Java irgendwas zu lahm ist, liegts in der regel daran, dass man mist programmiert hat. du wärst also nicht der erste, dem sowas passiert ist.

    nman schrieb:

    JOGL war letzten Endes trotzdem um Größenordnungen schneller. Sowohl unter GNU/Linux mit Nvidia-Treibern, als auch mit WinXP (irgendeine ATI-Karte), obwohl wir natürlich Java 1.5 benutzten. War auch kein Einzelfall, andere Gruppen hatten ähnliche Ergebnisse.

    um welche art von grafikausgeben gings denn? hat's denn jemand mit -Dsun.java2d.opengl=true versucht?

    nman schrieb:

    Interessant hier ist: Hör endlich auf, ohne Erfahrung und jegliche Vorkenntnisse einfach irgendwelche komplett frisch ergoogelten Sachen zu posten, ohne zumindest darauf hinzuweisen, dass Du keine Ahnung hast.

    ich habe schon java2D benutzt und es war immer sehr schnell. natürlich hab' ich mich nicht an einem echtzeit-egoshooter oder sowas versucht, aber das war auch nicht gefragt, sondern es geht um farbige linien und polygone. würde mich jedenfalls wundern, wenn Java2d dafür zu langsam ist.

    btw, ausserdem weiss ich garnicht, was du hast. es ist doch gut, wenn dem OP mehrere alternativen vorgeschlagen werden. vielleicht kommt ja noch wer mit 'ner anderen idee.
    🙂



  • ;fricky schrieb:

    um welche art von grafikausgeben gings denn? hat's denn jemand mit -Dsun.java2d.opengl=true versucht?

    Viele bunte Linien und Polygone. Ganz simple Texturen. (Für eine Echtzeit-Rendering-Engine für eine Computergraphik-Lehrveranstaltung.)
    Klar. Wir haben damals von der LVA-Leitung auch das hier empfohlen bekommen: http://www.javapassion.com/planning/handsonbyol/java2dperf/index.html

    würde mich jedenfalls wundern, wenn Java2d dafür zu langsam ist.

    Jester fragte nach "mehreren tausend Kanten und Polygonen". Hast Du damit Erfahrung?
    Keine Ahnung, ob es mit Java 1.6 irgendwelche gröberen Änderungen gab, aber unter Java 1.5 war vor drei oder vier Jahren die Performance mit Java2D und OpenGL auf vielen Rechnern spür- und messbar schlechter als mit JOGL.

    btw, ausserdem weiss ich garnicht, was du hast. es ist doch gut, wenn dem OP mehrere alternativen vorgeschlagen werden. vielleicht kommt ja noch wer mit 'ner anderen idee.
    🙂

    Ja, das ist toll, wenn es sich um mehrere Vorschläge handelt, bei denen die Poster ein bisschen Ahnung davon haben, was sie schreiben. Wenn einfach irgendjemand ständig "I'm feeling Lucky" klickt, ist es unheimlich mühsam, passende Antworten herauszufinden.

    edit: Btw, dieser Thread wird für Jester wohl immer unbrauchbarer, ich halte mich jetzt raus und würde Dich gerne dazu einladen, es mir gleichzutun. Bei Interesse kannst Du gerne einen frischen Thread aufmachen.



  • nman schrieb:

    würde mich jedenfalls wundern, wenn Java2d dafür zu langsam ist.

    Jester fragte nach "mehreren tausend Kanten und Polygonen". Hast Du damit Erfahrung?
    Keine Ahnung, ob es mit Java 1.6 irgendwelche gröberen Änderungen gab, aber unter Java 1.5 war vor drei oder vier Jahren die Performance mit Java2D und OpenGL auf vielen Rechnern spür- und messbar schlechter als mit JOGL.

    ich hab' eine art framework, um mit samplingdaten rumzuspielen, dabei werden bestimmt mal 10000 samples gleichzeitig angezeigt und man kann in der datei hin- und herscrollen, ohne eine verzögerung zu bemerken. der einfache trick war, das zeichnen in ein 'GeneralPath' objekt und nicht direkt in der 'paint'-methode. das lief aber immer schon unter 1.6, auch ohne OGL explizit einzuschalten.

    nman schrieb:

    ...ich halte mich jetzt raus und würde Dich gerne dazu einladen, es mir gleichzutun. Bei Interesse kannst Du gerne einen frischen Thread aufmachen.

    nee, lass mal gut sein. solche dummen zickereien wie: 'googlen oder nicht' und so, sind mir zu blöd. das ist keinen extra thread wert.

    ah, hier: http://www.lwjgl.org/projects.php
    sieht auch nett aus.
    🙂


Log in to reply