Hallo Community,
ich habe eine nette kleine Simulation für die Effekte der speziellen Relativitätstheorie ausgegraben, letztes Update vom Entwickler im Jahre 2001, basierend auf dem uralten GTK+: http://lightspeed.sourceforge.net/
Nachdem ich zum Jahreswechsel etwas Freizeit habe, dachte ich, ich versuche mich mal daran, das Programm auf GTK2 oder sogar GTK3 zu portieren. Das Portieren auf GTK2 ging mit überschaubaren Änderungen vonstatten und das Programm lässt sich nun gegen GTK2 kompilieren, linken und ausführen. Allerdings gibt es zwei Probleme mit der OpenGL-Ausgabe:
1. Das Programm lastet einen der CPU-Kerne voll aus. Das war in der alten GTK+-Version nicht so.
2. Animationen werden oft nur abgespielt, während die Maus bewegt wird, Alt+Tab benutzt wird oder der Bildschirminhalt sonst wie verändert wird.
An dem OpenGL-Teil habe ich nur wenige Zeilen verändert: Einige Aufrufe von
mussten entfernt werden. Um das Problem 2 anzugehen, habe ich versucht an diese Stellen Aufrufe von
und
zu setzen. Erstere schienen die Häufigkeit von eingefrorenen Animationen reduziert zu haben, letztere scheinen keinen Effekt zu haben.
Ich kann gerne die ganze Funktion vor und nach meinen Änderungen anhängen oder auch die ganze Datei (ca. 600 Zeilen) -- was immer ihr für nötig erachtet. Ein Minimalbeispiel kriege ich wohl nicht hin, da ich keine Ahnung habe, wie der Code funktioniert.
Habe noch nie mit OpenGL oder GTK gearbeitet und C kenne ich auch nur dank einem zweiwöchigen C++-Kurs vor bald zehn Jahren. Bin also schon überrascht, dass ich es so weit gebracht habe mit dem Port, aber die beiden Probleme von oben sind da wohl zu harte Nüsse...
Frohe Weihnachten und schon mal einen guten Rutsch ins neue Jahr!
Photon
ich habe eine nette kleine Simulation für die Effekte der speziellen Relativitätstheorie ausgegraben, letztes Update vom Entwickler im Jahre 2001, basierend auf dem uralten GTK+: http://lightspeed.sourceforge.net/
Nachdem ich zum Jahreswechsel etwas Freizeit habe, dachte ich, ich versuche mich mal daran, das Programm auf GTK2 oder sogar GTK3 zu portieren. Das Portieren auf GTK2 ging mit überschaubaren Änderungen vonstatten und das Programm lässt sich nun gegen GTK2 kompilieren, linken und ausführen. Allerdings gibt es zwei Probleme mit der OpenGL-Ausgabe:
1. Das Programm lastet einen der CPU-Kerne voll aus. Das war in der alten GTK+-Version nicht so.
2. Animationen werden oft nur abgespielt, während die Maus bewegt wird, Alt+Tab benutzt wird oder der Bildschirminhalt sonst wie verändert wird.
An dem OpenGL-Teil habe ich nur wenige Zeilen verändert: Einige Aufrufe von
C:
gtk_gl_area_endgl()
mussten entfernt werden. Um das Problem 2 anzugehen, habe ich versucht an diese Stellen Aufrufe von
C:
gtk_widget_queue_draw()
und
C:
glFlush()
zu setzen. Erstere schienen die Häufigkeit von eingefrorenen Animationen reduziert zu haben, letztere scheinen keinen Effekt zu haben.
Ich kann gerne die ganze Funktion vor und nach meinen Änderungen anhängen oder auch die ganze Datei (ca. 600 Zeilen) -- was immer ihr für nötig erachtet. Ein Minimalbeispiel kriege ich wohl nicht hin, da ich keine Ahnung habe, wie der Code funktioniert.

Frohe Weihnachten und schon mal einen guten Rutsch ins neue Jahr!
Photon