PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : java, jogl und das Update ;(


darph
2006-01-22, 22:28:13
Ja.

Ich habe ein jogl Frame und male da was. Aus Performancegründen soll sich das bild nur dann aktualisieren, wenn es das auch soll, also wenn sich was geändert habe und/oder ich ihm das sage. Aus dem Grunde gibt es keinen Animator, da dieser ja afaik die Framerate so hoch wie möglich drücken würde.

Soweit ich weiß gibt es also nur: "Update so oft wie möglich" oder "update nur, wenn das eh neu gezeichnet werden muß, zum Beispiel weil ein anderen Fenster drüber lag"

Wie kann ich aber jetzt meine View nur genau dann updaten lassen, wenn ich das möchte?


Unser aktuelles Workaround - wir haben ein JFrame, das wir kurz visible und dann wieder invisible setzen.

Das ist aber erstens unschön und unfein und bringt zweitens noch einen Rattenschwanz an Problemen mit sich, neben Performanceeinbrüchen klaut der JFrame dem aktuellen Fenster auch noch den Fokus. Das darph nicht sein.

Es muß doch auch in jogl sowas geben wie die gewöhnliche repaint() Methode - daß ich von außen sagen kann: "Hey, es hat sich was geändert, update!"

Nur wie kann ich das anstellen?

Silpion
2006-01-23, 12:49:25
Mit der neuesten Version besteht die Möglichkeit, auf das Listener-Konzept zu verzichten und das Programm (wie es für OpenGL außerhalb von Java üblich ist) in einer selbst geschriebenen Renderer-Schleife laufen zu lassen.

Siehe auch hier:
http://www.javagaming.org/forums/index.php?PHPSESSID=84c7a719992a5593cd12777b6d599dff&topic=12094.0

Allerdings verzichtet ihr damit auch auf den ganzen Komfort des Listener-Konzepts.

Eine andere Möglichkeit wäre evtl. auf die neue Version umzusteigen und den Animator weiter zu nutzen, da er nun die Möglichkeit bietet, eine gewünschte Framerate in etwa zu halten. Mit 1 fps habt ihr sicher etliches an Zeit für die restlichen Berechnungen übrig.

Oder ihr könntet das Programm in mehrere Threads unterteilen, die eine höhere Priorität als der Animator bekommen.

darph
2006-01-23, 15:29:54
Leider fällt die Option neue Version verwenden flach - wir befinden uns bereits in der Validierungs- und Debugphase und könne nicht einfach unseren kompletten JOGL Code umschreiben - die Inkonsistenten bei unterschiedlichen Version sind dir ja bekannt. ;(


Das mit dem Animator und der Prozeßpriorität wäre allerdings einen Versuch wert.