Swing in Bild rendern

Status
Nicht offen für weitere Antworten.

Kr0e

Gesperrter Benutzer
Hallo,
habe ein relativ schwieriges Problem. Ich benötige eine 3D-OpenGL Gui. Ich hab bisher versucht selbst eine zu schreiben, was auch gut geklappt hat. Allerdings stoße ich allmählich an die Grenzen des Machbaren für eine Person. Die Zeit ist das PRoblem... Deshalb will ich nun Swing nach OpenGL wrappen. Ich brauche dafür nur eines:

Jede Operation von Swing darf nicht auf das Fesnter selbst sondern praktisch in ein BufferedImage gerendert werden. Ich bin mir ziemlich sicher dass das geht, immerhin ist Swing so geschrieben, dass die unter Schicht auswechselbar sein sollte... Nur wie genau ich das anstelle weiß ich im Moment nicht. Ich könnte mir gut vorstellen dass das sehr simpel ist... Finde dazu leider nix anständigen im Internet. Dort gab es LÖsungen, dass man immer einen Screenshot macht, bei jedem paint() Aufruf... Ansich keine schlechte Idee, aber dafür tierisch Rechenintensiv!

Gruß Chris
 

Kr0e

Gesperrter Benutzer
Hmm, Swogl kannte ich nicht... Sieht gut aus! Das löst vermutlich shcon mein Problem :D

Danke dir für den Tipp!

Gruß Chris
 

Marco13

Top Contributor
Ist aber noch eine sehr frühe Version - ich muss mal sehen, wann ich dazu komme, daran weiterzumachen. Aber falls du es verwendest, ist Feedback natürlich immer willkommen :)
 

Kr0e

Gesperrter Benutzer
Ok, ein wenig Feedback kann ich dir schonmal geben... Es gibt ein Problem leider ... Aber das findet man bei allen Swing/OpenGL Migrationen... Als Bereich für Swing wird eine einzige Texture verwendet... Da OpenGL mit "BufferedImage" nichts anfangen kann, muss das jedes mal umgewandelt werden. Das kostet tierisch viel Ressourcen wenn man das 20-30 mal in der Sekunde benötigt. Und diese Anfragezeiten entstehen, sobald man die Position der Fenster verändert mit der Maus. Und wenn dann z.b. noch im Hintergrund ein JTable ist, schlägt die CPU hoch hinaus.
Für meine Zwecke ist das dann leider zu viel CPU-Last, da ich parallel zur GUI Videos abspielen will mit JMF. Das dekomprimieren und abspielen benötigt mit JAva leider sehr viel Ressourcen, sodass ein Fenster mit Videoinhalt ins stottern kommt, sobald man es bewegt. Ich habe nun ein Zwischenlösung genommen:

Swing wird zwar auf Texturen gerendert, allerdings erhält jede Komponente eine eigene Textur. Das ist relativ eifnach mit Multitexturing zu erreichen. Mit JOGL ist das relativ viel Aufwand, ich benutzt die Java Monkey Engine, da dort viele Standard Routinen bereits zusammen gefasst sind. Der Vorteil ist, dass man mit OpenGL texturen beliebig verschieben kann, ohne die Texture selber neu zu zeichnen! Durch diesen Mix hab ich eine recht akzeptable CPU Last...

Gruß Chris

PS: Ich finde es sehr interesant, dass es noch immer keine 100% gute open source 3D Gui gibt für JOGL/LWJGL...
Genau deshalb finde ich den Ansatz Swing einfach zu wrappen genial und deine Version ist auf jeden Fall schonmal ne gute Lösung wenn man JOGL benutzt! Respekt dafür ;)
 

Marco13

Top Contributor
OK, wie du genau diese Umwandlung von BufferedImage in Textur machst (und wo das BufferedImage herkommt) weiß ich zwar nicht genau, aber bei JOGL gibt's den TextureRenderer (JOGL, NativeWindow and NEWT APIs) (liegt aktuell noch in einem anderen package), mit dem man ziemlich direkt in eine Texture reinpainten kann. Optimierungsmöglichkeiten gibt's diesbezüglich auch bei Swogl. Wie gesagt: Im Moment ist's bei mir zeitlich ein bißchen knapp, aber da werde ich noch ein bißchen dran basteln. Mit einem RepaintManager kreigt man ja mit, was neu gezeichnet werden muss (das wird in Swogl auch schon teilweise verwendet, kann aber noch verbessert werden)
 

Kr0e

Gesperrter Benutzer
Hi, ich bins nochmal:

Im Prinzip hast du Recht, sowas ähnliches gibt es auch für LWJGL... Aber die benutzen alle immer ein BufferedImage und übertragen dann hinterher die veränderten Stellen des Images auf die Texture... Problem ist, dass das teilweise nicht klappen kann! Also das nur einzelne Bereiche erneuert werden. Ich bin da damals ziemlich auf die Schnauze gefallen... ICh dachte ich wäre fertig und dann hab ichs auf einem Rechner getestet, dessen Grafikkarte diese Funktion nicht unterstütze... Und zagg, meine Performence war weg! Denn wenn andauernd die gesamte Texture erneuiert wird, also bei jeder kleinen Änderung des Image, wurde bei diesem PC immer die komplette Texture erneuert.. Das geht bei einem 1024x1024 image schnell in die Knie!!! Und da ich wie gesagt mit bewegbaren Fenstern gearbeitet hab, ging das so garnicht... Als ich jedem Fenster eine eigene Texture gegeben hab, ging es, da OpenGL wie gesagt Texturen verschieben kann auf Objekten. -> TexturKoordinaten
Aber wenn die GRafikkarte das untersützt geb ich dir da vollkommen recht!

Gruß Chris
 

Marco13

Top Contributor
Nun, wie genau dieser TextureRenderer da intern arbeitet, weiß ich nicht - vermutlich macht er etwas ähnliches oder das gleiche, wie das, was andere woanders vielleicht "per Hand" machen... aber das habe ich mir noch nicht näher angesehen ... hatte ihn nur in der API Doku entdeckt, und nach einem kurzen :reflect: hab' ich mit Swogl angefangen :D
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Warum flackert das Bild ? (Swing) AWT, Swing, JavaFX & SWT 16
K Swing Komponente als Bild speichern AWT, Swing, JavaFX & SWT 11
ARadauer Bild von Webseite in lokaler Swing Anwedung anzeigen AWT, Swing, JavaFX & SWT 4
M Aus Swing Oberfläche Bild erzeugen AWT, Swing, JavaFX & SWT 39
G Bild ausgeben mit Swing AWT, Swing, JavaFX & SWT 8
C Swing: Bild scrollable? AWT, Swing, JavaFX & SWT 6
Juelin javax.swing in javafx AWT, Swing, JavaFX & SWT 1
A Eclipse 2023 und Swing AWT, Swing, JavaFX & SWT 4
W 2 JTables in einem Swing-Fenster? AWT, Swing, JavaFX & SWT 5
H Swing Componente zur Läufzeit ändern AWT, Swing, JavaFX & SWT 3
B Actionlistener mit Java Swing AWT, Swing, JavaFX & SWT 2
W Gibt es einen "automatischen Listener" in Swing oder JTable oder der ATM-Klasse? AWT, Swing, JavaFX & SWT 14
H Swing Buttons erst nach Klick sichtbar AWT, Swing, JavaFX & SWT 13
ExceptionOfExpectation Anpassung von JKomponentengrößen (Swing) AWT, Swing, JavaFX & SWT 3
thor_norsk AWT SWING Aufgabe AWT, Swing, JavaFX & SWT 7
U Zwei Fragen zu eienr Swing Aufgabe AWT, Swing, JavaFX & SWT 2
M Swing Bilder in Swing anzeigen AWT, Swing, JavaFX & SWT 9
H Swing , GridLayout, Größenbestimmung der Komponenten im Layout AWT, Swing, JavaFX & SWT 8
H Simple Animation mit Swing AWT, Swing, JavaFX & SWT 2
Guybrush Threepwood Einfachste Möglichkeit zum Abspielen eines Videos in Swing AWT, Swing, JavaFX & SWT 4
A Swing ProgressBar über 2 parallel laufende Threads AWT, Swing, JavaFX & SWT 2
M Swing GridLayout AWT, Swing, JavaFX & SWT 2
O return-Statement mit Swing AWT, Swing, JavaFX & SWT 6
O Ein Java-Programm mit Swing steuern AWT, Swing, JavaFX & SWT 1
Monokuma Swing zu JavaFX AWT, Swing, JavaFX & SWT 5
J Swing Slider AWT, Swing, JavaFX & SWT 11
G Thread starten Swing AWT, Swing, JavaFX & SWT 5
G Swing JPasswordField AWT, Swing, JavaFX & SWT 12
L Swing Button Farbe ändern/wechseln AWT, Swing, JavaFX & SWT 2
C Swing AWT GUI Anfänger Aufgabe AWT, Swing, JavaFX & SWT 7
W Inject bei einem Swing Frontend AWT, Swing, JavaFX & SWT 8
L Kommunikation zwischen Klassen / Konstruktoren bei Swing AWT, Swing, JavaFX & SWT 9
M Feldvalidierung swing AWT, Swing, JavaFX & SWT 4
E Swing Componenten werden nach Änderung des display modes verzerrt dargestellt AWT, Swing, JavaFX & SWT 8
D [Swing] Anordnung von Komponenten mit GridLayout Manager AWT, Swing, JavaFX & SWT 13
O Zukunft von Swing und JavaFX ? AWT, Swing, JavaFX & SWT 3
S Swing Fenster State Machine AWT, Swing, JavaFX & SWT 1
T Swing Swing an Bildschirm anpassen AWT, Swing, JavaFX & SWT 3
S Swing Panel wird nicht neu gezeichnet AWT, Swing, JavaFX & SWT 3
M Swing Java Swing/AWT Combobox Bug AWT, Swing, JavaFX & SWT 3
M Swing GUI mittels erben sowie variabler Dateninhalt AWT, Swing, JavaFX & SWT 1
W Swing Multitouch mit Swing AWT, Swing, JavaFX & SWT 6
S Swing-Applikation die ein Numpad nachbildet samt Keybindings..? AWT, Swing, JavaFX & SWT 5
S Swing Java Swing AWT, Swing, JavaFX & SWT 6
Blender3D Problem mit € Symbol Font Gotham Windows 10 Swing AWT, Swing, JavaFX & SWT 11
J Swing oder JavaFX AWT, Swing, JavaFX & SWT 21
D Swing Anwendung ohne JPanel erstellen AWT, Swing, JavaFX & SWT 1
D SQL Statements mit Java Swing benutzen AWT, Swing, JavaFX & SWT 4
Damtonix BufferStrategy flackert (Swing) AWT, Swing, JavaFX & SWT 9
D DatePicker für Java Swing AWT, Swing, JavaFX & SWT 2
B JavaFX oder swing AWT, Swing, JavaFX & SWT 3
T Java Swing - kleines Rechteck unter dem cursor AWT, Swing, JavaFX & SWT 5
L 2D-Grafik Swing paint|paintComponent AWT, Swing, JavaFX & SWT 2
L Swing Größe automatisch anpassen AWT, Swing, JavaFX & SWT 14
G Swing Swing Binding JList funktioniert nicht AWT, Swing, JavaFX & SWT 5
Blender3D Meine Swing Anwendung läuft unter Windows 10 und Ubuntu aber nicht auf Windows 7 AWT, Swing, JavaFX & SWT 16
B Bar Plot in Swing JPanel AWT, Swing, JavaFX & SWT 0
D Swing in Kombination mit JGraphX und JGraphT AWT, Swing, JavaFX & SWT 0
F main-Funktion bei Swing AWT, Swing, JavaFX & SWT 4
S Java Swing Print() method AWT, Swing, JavaFX & SWT 4
S Java Swing auf Windows Phone AWT, Swing, JavaFX & SWT 6
I JAVAFX - Übergabe der Inhalte an eine Scene - Wo ist der Vorteil gegenüber Swing? AWT, Swing, JavaFX & SWT 2
S Manuelles Menu in Swing AWT, Swing, JavaFX & SWT 3
T Custom Window ohne Swing / AWT / FX..?! AWT, Swing, JavaFX & SWT 1
MaxG. Swing Swing Komponenten zur Laufzeit hinzufügen AWT, Swing, JavaFX & SWT 2
Java_RY Bin Ratlos bzgl Malen in Swing AWT, Swing, JavaFX & SWT 5
offi Swing Shuttle List AWT, Swing, JavaFX & SWT 9
I Graph mit Swing zeichnen AWT, Swing, JavaFX & SWT 8
D Swing Swing Objekte sehen im Entwurf anders aus als beim Ausführen AWT, Swing, JavaFX & SWT 3
S Swing & Clean und build Problem AWT, Swing, JavaFX & SWT 12
javampir Swing repaint in JavaFX Anwendung AWT, Swing, JavaFX & SWT 3
K Mit JavaFX angefangen. Lohnt sich Swing? AWT, Swing, JavaFX & SWT 28
B Swing Update Swing Komponente bevor Methode startet. AWT, Swing, JavaFX & SWT 4
B Swing Tabelle(JTable) filtern swing GUI AWT, Swing, JavaFX & SWT 3
M Swing Swing-Widgets und paintComponent() AWT, Swing, JavaFX & SWT 2
B Swing WindowBuilde: Menu -> anderes Panel wechseln AWT, Swing, JavaFX & SWT 1
K eigener button in swing AWT, Swing, JavaFX & SWT 3
A JavaFX DatePicker in Swing beim Start nicht sichtbar AWT, Swing, JavaFX & SWT 2
windl Bufferstrategy in Swing nachstellen AWT, Swing, JavaFX & SWT 0
M Kamera in Java Swing einbinden AWT, Swing, JavaFX & SWT 4
Z Swing Swing und die Progressbar AWT, Swing, JavaFX & SWT 1
J Frage zur objektorentierten Swing Programmierung AWT, Swing, JavaFX & SWT 10
Xanny 2D-Grafik Beginner! Probleme mit Swing, Gprahics class und paint AWT, Swing, JavaFX & SWT 13
F Java Swing Rechteck in JPanel zeichnen AWT, Swing, JavaFX & SWT 7
N Swing Benötige Hilfe um ein Swing Canvas zu speichern AWT, Swing, JavaFX & SWT 4
stylegangsta JButton Fehelr javax.swing.ImageIcon.<init>(Unknown Source) AWT, Swing, JavaFX & SWT 24
RalleYTN Swing JavaFX VideoPlayer in Swing einbetten. Ich komm nicht an die Dimension des Videos! AWT, Swing, JavaFX & SWT 0
T swing läuft nur beding flüssig AWT, Swing, JavaFX & SWT 1
A Sonderzeichen bei Swing AWT, Swing, JavaFX & SWT 3
L DoubleBuffering unter Swing AWT, Swing, JavaFX & SWT 0
N Programm mit Swing und Thread, Figur bewegen sich nicht AWT, Swing, JavaFX & SWT 6
D Java Swing, Label lässt sich nicht mit Checkboxen/Knopf verändern AWT, Swing, JavaFX & SWT 2
J Swing Basics - JButton funktioniert nicht. AWT, Swing, JavaFX & SWT 1
J Swing/AWT | Dynamisch erzeugte Objekte ansprechen AWT, Swing, JavaFX & SWT 1
N JavaFX Umstieg von Swing auf Java FX AWT, Swing, JavaFX & SWT 6
J GUI Anfänger einfaches Program AWT, Swing, JavaFX & SWT AWT, Swing, JavaFX & SWT 3
M Swing Grundlegende Frage zu SWING mit WindowBuilder AWT, Swing, JavaFX & SWT 11
M Plugin oder eigenes Tool mit zB SWING AWT, Swing, JavaFX & SWT 2
Z Java-Swing : JComponent AWT, Swing, JavaFX & SWT 2
Z Swing Swing: Elemente werden doppel/verschoben gezeichnet, sind teils unsichtbar etc... AWT, Swing, JavaFX & SWT 10

Ähnliche Java Themen

Neue Themen


Oben