3d-Engine Bildschirmflackern

Für Fragen zu Grafik APIs wie DirectX und OpenGL sowie Shaderprogrammierung.

3d-Engine Bildschirmflackern

Beitragvon RedGuy » 26.09.2015, 18:47

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 ?!
RedGuy
Manuel Hofmann
Establishment
 
Beiträge: 111
Registriert: 17.09.2002, 17:27
Wohnort: Rottweil

Re: 3d-Engine Bildschirmflackern

Beitragvon MasterQ32 » 27.09.2015, 02:21

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
Duct tape is like the force. It has a light side, a dark side, and it holds the world together.
Benutzeravatar
MasterQ32
Felix Queißner
Establishment
 
Beiträge: 1145
Registriert: 07.10.2012, 14:56

Re: 3d-Engine Bildschirmflackern

Beitragvon RedGuy » 27.09.2015, 10:42

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

Re: 3d-Engine Bildschirmflackern

Beitragvon Spiele Programmierer » 27.09.2015, 11:36

Ja, das braucht man "grundsätzlich".
Allerdings muss man das normalerweise einfach nur aktivieren.
Spiele Programmierer
Establishment
 
Beiträge: 341
Registriert: 23.01.2013, 16:55

Re: 3d-Engine Bildschirmflackern

Beitragvon RedGuy » 27.09.2015, 11:57

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
Manuel Hofmann
Establishment
 
Beiträge: 111
Registriert: 17.09.2002, 17:27
Wohnort: Rottweil

Re: 3d-Engine Bildschirmflackern

Beitragvon RedGuy » 27.09.2015, 12:36

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

Re: 3d-Engine Bildschirmflackern

Beitragvon foofel » 27.09.2015, 16:48

kannst du davon ein kurzes video aufnehmen?
foofel
 
Beiträge: 10
Registriert: 03.03.2014, 13:34

Re: 3d-Engine Bildschirmflackern

Beitragvon RedGuy » 27.09.2015, 18:44

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, 14:55, insgesamt 2-mal geändert.
RedGuy
Manuel Hofmann
Establishment
 
Beiträge: 111
Registriert: 17.09.2002, 17:27
Wohnort: Rottweil

Re: 3d-Engine Bildschirmflackern

Beitragvon RedGuy » 07.11.2015, 14:16

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, 17:51, insgesamt 3-mal geändert.
RedGuy
Manuel Hofmann
Establishment
 
Beiträge: 111
Registriert: 17.09.2002, 17:27
Wohnort: Rottweil

Re: 3d-Engine Bildschirmflackern

Beitragvon Krishty » 07.11.2015, 23:21

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


Zurück zu Grafikprogrammierung

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast