3d-Engine Bildschirmflackern

Für Fragen zu Grafik APIs wie DirectX und OpenGL sowie Shaderprogrammierung.
Antworten
RedGuy
Establishment
Beiträge: 117
Registriert: 17.09.2002, 17:27
Echter Name: Manuel Hofmann
Wohnort: Rottweil
Kontaktdaten:

3d-Engine Bildschirmflackern

Beitrag von RedGuy »

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 ?!
Benutzeravatar
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

Beitrag von xq »

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.
RedGuy
Establishment
Beiträge: 117
Registriert: 17.09.2002, 17:27
Echter Name: Manuel Hofmann
Wohnort: Rottweil
Kontaktdaten:

Re: 3d-Engine Bildschirmflackern

Beitrag von RedGuy »

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
Spiele Programmierer
Establishment
Beiträge: 426
Registriert: 23.01.2013, 15:55

Re: 3d-Engine Bildschirmflackern

Beitrag von Spiele Programmierer »

Ja, das braucht man "grundsätzlich".
Allerdings muss man das normalerweise einfach nur aktivieren.
RedGuy
Establishment
Beiträge: 117
Registriert: 17.09.2002, 17:27
Echter Name: Manuel Hofmann
Wohnort: Rottweil
Kontaktdaten:

Re: 3d-Engine Bildschirmflackern

Beitrag von RedGuy »

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
RedGuy
Establishment
Beiträge: 117
Registriert: 17.09.2002, 17:27
Echter Name: Manuel Hofmann
Wohnort: Rottweil
Kontaktdaten:

Re: 3d-Engine Bildschirmflackern

Beitrag von RedGuy »

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
foofel
Beiträge: 10
Registriert: 03.03.2014, 12:34

Re: 3d-Engine Bildschirmflackern

Beitrag von foofel »

kannst du davon ein kurzes video aufnehmen?
RedGuy
Establishment
Beiträge: 117
Registriert: 17.09.2002, 17:27
Echter Name: Manuel Hofmann
Wohnort: Rottweil
Kontaktdaten:

Re: 3d-Engine Bildschirmflackern

Beitrag von RedGuy »

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
Zuletzt geändert von RedGuy am 07.11.2015, 13:55, insgesamt 2-mal geändert.
RedGuy
Establishment
Beiträge: 117
Registriert: 17.09.2002, 17:27
Echter Name: Manuel Hofmann
Wohnort: Rottweil
Kontaktdaten:

Re: 3d-Engine Bildschirmflackern

Beitrag von RedGuy »

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.

Bild

alles tatellos.

Hier der wire frame:

Bild

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.
Benutzeravatar
Krishty
Establishment
Beiträge: 8316
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: 3d-Engine Bildschirmflackern

Beitrag von Krishty »

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.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Antworten