Um diesen Thread nicht gänzlich in der Versenkung verschwinden zu lassen, berichte ich einmal darüber, an was ich gerade Arbeite...
Laut
Roadmap schreibe ich gerade am Linux-Support. Das ist zwar richtig, allerdings beschreibt es nicht ganz was dafür alles getan werden muss/musste.
Als erstes musste ich natürlich Andorra 2D ein wenig umkrempeln. Um die Erstellung eines Fensters, um das zurückgeben eines Handles (falls das Ausgabefenster schon existiert) oder um die Bereitstellung eines OGL-Contextes kümmert sich nun eine abstrakte Klasse namens "TAdWindowFramework". Außerdem ist dieses für die Ereignisbehandlung zuständig.
Wie oben schon angedeutet gibt es diese "WindowFrameworks" in allen Formen und Farben. Da wären zum Beispiel:
- TAdVCLWindowFramwork - Ein Windowframework für Windows und Delphi/Lazarus, welches die VCL/LCL zum erzeugen eines Fensters verwendet
- TAdWin32WindowFramework - Ein Windowframework für Windows und Delphi, welches die pure Win32-API zum erstellen des Fenster verwendet
- TAdGLFWWindowFramework - Ein crossplatform Windowframework für Delphi/Lazarus, welches die Bibliothek GLFW zum erstellen eines Fensters mit OGL-Context verwendet.
- TAdVCLComponentWindowFramework - Ein Windowframework für Windows und Delphi/Lazarus, welches das Handle eines existierenden VCL/LCL-Controls zurückgibt. Dieses Framework schafft die Kompatibilität zu den vorherigen Versionen von Andorra 2D
- TAdOGLContextLCLComponentWindowFramework - Wie oben, erzeugt jedoch auf dem angegeben Control ein Crossplattform OpenGL-Context und ist somit auch unter Linux zu verwenden
Nun kann man sich je nach Geschmack eines (oder auch mehrere) dieser Frameworks aussuchen und einfach in die Uses-Liste aufnehmen. Andorra 2D sucht dann automatisch ein passendes Framework aus. Standardmäßig ist unter Windows das "TAdVCLComponentWindowFramework" und unter Linux das "TAdOGLContextLCLComponentWindowFramework" eingebunden, lassen sich jedoch über einen Kompilierschalter entfernen.
Um das Eventmanagement zu ermöglichen, ist außerdem die
Unit "AdEvents" mit Typ- und Konstantendeklarationen hinzugekommen.
Ein weiterer Schritt war das laden von Grafiken unter Linux zu ermöglichen. Dazu musste die
Unit "AdLCLFormats" her. Super ist hierbei, das Lazarus bereits PNGs laden kann. Schlecht dabei ist, das unter Linux/GTK dessen Transparenz verloren geht. Deshalb habe ich noch jeweils eine Andorra-Anbindung für "DevIL" und "FreeImage" geschrieben.
Außerdem musste ich auch noch die
Unit "JclSimpleXML" unter Lazarus zum laufen bringen, was mir nach ein bisschen Code umkopierer- und löscherrei geglückt ist. Die
Unit ist nun als "AdSimpleXML" standardmäßig im "src" Verzeichnis von Andorra 2D vorhanden.
Ich lade gleich mal die aktualisierte Version ins
CVS. Theoretisch sollte alles unter Linux laufen, praktisch muss ich das noch überprüfen. Eine Anleitung für das Kompilieren unter Lazarus gibt es dann auch bald.
Jetzt muss ich alles nur noch ein bisschen Testen und noch ein bisschen "schöner" machen.
Kommentare sind wie immer erwünscht,
Andreas
edit:
Diese Demo zeigt, wie man eine Andorra 2D Anwendung schreibt, die ohne Probleme mit Lazarus und Delphi unter Windows und Linux läuft:
http://andorra.cvs.sourceforge.net/a.../SimpleNonVCL/