3d-Engine Bildschirmflackern
-
- Establishment
- Beiträge: 117
- Registriert: 17.09.2002, 17:27
- Echter Name: Manuel Hofmann
- Wohnort: Rottweil
- Kontaktdaten:
3d-Engine Bildschirmflackern
Hallo zusammen !
Bin an einer eigenen 3d-Engine dran.
Programmiere in JAVA und verwende JavaFX.
Jetzt habe ich ein Problem: das Bild flackert :( !
Für die Taktung der Hauptschleife verwende ich die AnimationTimer Klasse. Da rauscht das Programm sehr oft (über >=100 FPS) durch.
Habe schon einen asynchronen FPS - limiter probiert. Aber das bringt nichts.
Hat da jemand einen tieferen Einblick in die JAVAFX API ? Woran könnte das Flackern liegen ?
Falls ich entsprechenden code posten soll- einfach schreiben!
Gruss
RedGuy
PS: Bin ich hier im richtigen Forumteil für eine eigene 3d-Engine ?!
Bin an einer eigenen 3d-Engine dran.
Programmiere in JAVA und verwende JavaFX.
Jetzt habe ich ein Problem: das Bild flackert :( !
Für die Taktung der Hauptschleife verwende ich die AnimationTimer Klasse. Da rauscht das Programm sehr oft (über >=100 FPS) durch.
Habe schon einen asynchronen FPS - limiter probiert. Aber das bringt nichts.
Hat da jemand einen tieferen Einblick in die JAVAFX API ? Woran könnte das Flackern liegen ?
Falls ich entsprechenden code posten soll- einfach schreiben!
Gruss
RedGuy
PS: Bin ich hier im richtigen Forumteil für eine eigene 3d-Engine ?!
homepage: http://ncores.de
- xq
- Establishment
- Beiträge: 1589
- Registriert: 07.10.2012, 14:56
- Alter Benutzername: MasterQ32
- Echter Name: Felix Queißner
- Wohnort: Stuttgart & Region
- Kontaktdaten:
Re: 3d-Engine Bildschirmflackern
Joar Forumteil dürfte passen. Habe weder Ahnung von von JavaFX noch deiner verwendeten Klassen würde aber von den Symptomen her auf fehlendes/kaputtes Double Buffering tippen, das klingt arg nach Bildaufbauflackern
War mal MasterQ32, findet den Namen aber mittlerweile ziemlich albern…
Programmiert viel in Zig und nervt Leute damit.
Programmiert viel in Zig und nervt Leute damit.
-
- Establishment
- Beiträge: 117
- Registriert: 17.09.2002, 17:27
- Echter Name: Manuel Hofmann
- Wohnort: Rottweil
- Kontaktdaten:
Re: 3d-Engine Bildschirmflackern
Hi!
Hey, Danke für die Antwort MasterQ32 !
Das mit dem double buffering könnte wirklich das Problem sein- ich habe das nämlich gar nicht implementiert...
Braucht man double buffering grundsätzlich ?
Ergänzung: selbst meine FPS - Anzeige wird kaum angezeigt - nur falls ich Glück habe :( !
Gruss
RedGuy
Hey, Danke für die Antwort MasterQ32 !
Das mit dem double buffering könnte wirklich das Problem sein- ich habe das nämlich gar nicht implementiert...
Braucht man double buffering grundsätzlich ?
Ergänzung: selbst meine FPS - Anzeige wird kaum angezeigt - nur falls ich Glück habe :( !
Gruss
RedGuy
homepage: http://ncores.de
-
- Establishment
- Beiträge: 426
- Registriert: 23.01.2013, 15:55
Re: 3d-Engine Bildschirmflackern
Ja, das braucht man "grundsätzlich".
Allerdings muss man das normalerweise einfach nur aktivieren.
Allerdings muss man das normalerweise einfach nur aktivieren.
-
- Establishment
- Beiträge: 117
- Registriert: 17.09.2002, 17:27
- Echter Name: Manuel Hofmann
- Wohnort: Rottweil
- Kontaktdaten:
Re: 3d-Engine Bildschirmflackern
Hi !
Also am double buffering liegt es nicht !
In der JAVA - API selbst lässt sich das double buffering einschalten - wie "Spiele Programmierer" schon sagte ;) !
Das bringt aber scheinbar nichts- das Flackern ist immer noch gegeben :( .
Gruss
RedGuy
Also am double buffering liegt es nicht !
In der JAVA - API selbst lässt sich das double buffering einschalten - wie "Spiele Programmierer" schon sagte ;) !
Das bringt aber scheinbar nichts- das Flackern ist immer noch gegeben :( .
Gruss
RedGuy
homepage: http://ncores.de
-
- Establishment
- Beiträge: 117
- Registriert: 17.09.2002, 17:27
- Echter Name: Manuel Hofmann
- Wohnort: Rottweil
- Kontaktdaten:
Re: 3d-Engine Bildschirmflackern
Wichtiges update:
die Anzeige streikt schon bei einem Bild/Frame für sich :( !!! Vielleicht hat jemand eine Idee bezüglich der JAVAFX - API.
Frage:
Könnte es ein Threading - Problem bei der Ausführung des JAVA FX codes sein ?!
Gruss
RedGuy
die Anzeige streikt schon bei einem Bild/Frame für sich :( !!! Vielleicht hat jemand eine Idee bezüglich der JAVAFX - API.
Frage:
Könnte es ein Threading - Problem bei der Ausführung des JAVA FX codes sein ?!
Gruss
RedGuy
homepage: http://ncores.de
Re: 3d-Engine Bildschirmflackern
kannst du davon ein kurzes video aufnehmen?
-
- Establishment
- Beiträge: 117
- Registriert: 17.09.2002, 17:27
- Echter Name: Manuel Hofmann
- Wohnort: Rottweil
- Kontaktdaten:
Re: 3d-Engine Bildschirmflackern
Hallo!
Klar- done @youtube:
https://www.youtube.com/watch?v=GwVpzWEhM_4
Bitte nicht erschrecken, das Programm ist halt noch Fehler behaftet; eigentlich sollte ein Bild einer Pazifikinsel dargestellt werden :D .
Bin halt noch am Anfang...
Gruss
RedGuy
Klar- done @youtube:
https://www.youtube.com/watch?v=GwVpzWEhM_4
Bitte nicht erschrecken, das Programm ist halt noch Fehler behaftet; eigentlich sollte ein Bild einer Pazifikinsel dargestellt werden :D .
Bin halt noch am Anfang...
Gruss
RedGuy
Zuletzt geändert von RedGuy am 07.11.2015, 13:55, insgesamt 2-mal geändert.
homepage: http://ncores.de
-
- Establishment
- Beiträge: 117
- Registriert: 17.09.2002, 17:27
- Echter Name: Manuel Hofmann
- Wohnort: Rottweil
- Kontaktdaten:
Re: 3d-Engine Bildschirmflackern
Hi zusammen !
Also es gibt Neuigkeiten und Auflösungen - diese möchte ich hier preisgeben.
Zunächst einmal ein Bild vom aktuellen Stand der engine. Es wird über zwei texturierte Dreiecke ein Bild einer Pazifikinsel angezeigt.
alles tatellos.
Hier der wire frame:
Auch dieser tatellos.
Interessant ist die Umsetzung der Texturierung. Hier habe ich keine (herkömmliche) Texturprojektion (z.B. linear texture mapping),
sondern mein eigenes Konzept eingesetzt !!!
Der Vorteil von meinem eigenen Konzept ist, dass die Rasterung stets photorealistisch ist (so wie im Bild oben gezeigt). Auch wenn das Bild einmal
kleinskaliert (wegen Entfernung) werden sollte. Ich benötige kein anti-aliasing !!!
Der Nachteil ist ein enormes Ressourcenfressen. Ich kann ggf. keine Echtzeitengine daraus bauen, sondern muss einen frame explizit kompilieren (!) :) .
Im Moment bin ich noch dran- denn ich habe noch so Sachen wie z.B. Bildschirmflackern.
Wenn das Projekt fertig gestellt ist, werde ich es hier (unter Projekte) vorstellen. Es soll ein Modelling - Tool werden.
Dann werde ich auch mein Texturierungskonzept ggf. preisgeben ;) .
---
Ein paar Auflösungen zu oben beschriebenen Problemen:
-die Sache mit dem kompletten Flackern (also z.B. auch FPS-Anzeige wird gar nicht angezeigt) habe ich gelöst.
Scheinbar lag es unter Anderem an Threading - Problemen der Java - Swing - Klassen und an dem Animation - Timer.
Ich verwende heute sauber und einfach die Klassen JFrame und JPanel. Und anstatt des Animation - Timers verwende ich ein asynchrones System mit
System.nanoTime() !!!
-die grauenhafte Darstellung wie im Youtube - Video oben dargestellt habe ich durch mein neues Konzept der Rasterung gelöst
urspünglich hatte ich die Texturierung über baryzentrische bzw. trilineare Koords vor. siehe http://zfx.info/viewtopic.php?f=7&t=3827
@Krishty: mit baryzentrischen bzw. trilinearen Koords hat das Ganze nach 4 Versuchen nicht hingehauen. Ich verwende jetzt, wie oben angesprochen, ein anderes System. Es funktioniert jetzt, nach 5tem Versuch alles !!! Aber danke trotzdem für deine Unterstützung!!!
Gruss
RedGuy
Also es gibt Neuigkeiten und Auflösungen - diese möchte ich hier preisgeben.
Zunächst einmal ein Bild vom aktuellen Stand der engine. Es wird über zwei texturierte Dreiecke ein Bild einer Pazifikinsel angezeigt.
alles tatellos.
Hier der wire frame:
Auch dieser tatellos.
Interessant ist die Umsetzung der Texturierung. Hier habe ich keine (herkömmliche) Texturprojektion (z.B. linear texture mapping),
sondern mein eigenes Konzept eingesetzt !!!
Der Vorteil von meinem eigenen Konzept ist, dass die Rasterung stets photorealistisch ist (so wie im Bild oben gezeigt). Auch wenn das Bild einmal
kleinskaliert (wegen Entfernung) werden sollte. Ich benötige kein anti-aliasing !!!
Der Nachteil ist ein enormes Ressourcenfressen. Ich kann ggf. keine Echtzeitengine daraus bauen, sondern muss einen frame explizit kompilieren (!) :) .
Im Moment bin ich noch dran- denn ich habe noch so Sachen wie z.B. Bildschirmflackern.
Wenn das Projekt fertig gestellt ist, werde ich es hier (unter Projekte) vorstellen. Es soll ein Modelling - Tool werden.
Dann werde ich auch mein Texturierungskonzept ggf. preisgeben ;) .
---
Ein paar Auflösungen zu oben beschriebenen Problemen:
-die Sache mit dem kompletten Flackern (also z.B. auch FPS-Anzeige wird gar nicht angezeigt) habe ich gelöst.
Scheinbar lag es unter Anderem an Threading - Problemen der Java - Swing - Klassen und an dem Animation - Timer.
Ich verwende heute sauber und einfach die Klassen JFrame und JPanel. Und anstatt des Animation - Timers verwende ich ein asynchrones System mit
System.nanoTime() !!!
-die grauenhafte Darstellung wie im Youtube - Video oben dargestellt habe ich durch mein neues Konzept der Rasterung gelöst
urspünglich hatte ich die Texturierung über baryzentrische bzw. trilineare Koords vor. siehe http://zfx.info/viewtopic.php?f=7&t=3827
@Krishty: mit baryzentrischen bzw. trilinearen Koords hat das Ganze nach 4 Versuchen nicht hingehauen. Ich verwende jetzt, wie oben angesprochen, ein anderes System. Es funktioniert jetzt, nach 5tem Versuch alles !!! Aber danke trotzdem für deine Unterstützung!!!
Gruss
RedGuy
Zuletzt geändert von RedGuy am 07.12.2015, 16:51, insgesamt 3-mal geändert.
homepage: http://ncores.de
- Krishty
- Establishment
- Beiträge: 8316
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: 3d-Engine Bildschirmflackern
Na die Hauptsache ist doch, dass es funktioniert; egal, wie :) Ich weiß zwar nicht, was diese Art der Texturierung nun so besonders macht und wofür man sie braucht, aber ich verfolge gern die Fortschritte.