Was ist Allegro ?
-
Hallo Leute!
Nachdem doch immer wieder Fragen nach Grafik unter DOS kommen, laden, und
darstellen von Bildern, manche Leute sich außerdem mit DirectX und der WinAPI
schwer tun, möchte ich - da es in deutsch kaum was gibt - mal ein wenig über
Allegro und den derzeitigen Stand erzählen. Dann reicht es in Zukunft auf
diesen Thread zu verweisen.Allegro ist eine Multiplatform-Game/Multimedia-Library in C mit
einigen ASM-Parts, die jedoch auch unter C++ nutzbar ist und sich derzeit
stark in der Entwicklung auf Version 4.0 hinzu befindet.
Die Homepage findet sich unter http://www.sunsite.dk/allegro
Die CVS-Version, also dort, wo live dran gearbeitet wird, findet sich unter http://sourceforge.net/projects/alleg/
Dort gibt's auch die nötige Downloadsektion.Die offizielle Version ist im Umfeld der GPL (Gnu Public License)
des DJGPP-Compilers und für diesen entstanden, also Open Source - kosten- und
haftungsfrei.
Erst für Windows, dann für Linux, sind Portierungen erstellt worden, die nun
alle unter einen Hut gebracht wurden, wobei diverse Compiler berücksichtigt
wurden. Es gibt immer wieder Zwischenversionen, WIP (Work in Project) genannt.Die Features von Allegro sind bald nicht mehr aufzuzählen, umfassen den
Bereich Input (Keyboard, Joystick, Mouse), Output (Grafik, Audio, auch MIDI),
Timing, eigene Interrupts, sowie etliches im Bereich 3D, eben auch mit den
notwendigen Mathematikfunktionen, bis hin zum
integrierten Szenerenderer und komprimierten Datafiles.
Leider gibt es (noch) keine deutsche Dokumentation, die englische aber auch
in HTML nach erfolgreicher Einrichtung.
- wer also noch in die Hall of Fame möchte...Allegro kann diverse Bitmapdateitypen laden, nicht jedoch diese mit
Copyrights. BMP, TGA, PCX kann es, GIF und JPEG nicht.
Für den DJGPP gibt es Links für CD-, Audio- und MP3-Libraries, sowie GIF- und
JPG-Reader. Allegro lädt und spielt WAV-Dateien und MIDI-Files, sowie FLI und
FLC.
Reine DOS-Programmierer können damit Erstaunliches zaubern und ihre Programme
später auf Linux, BeOS und z.B. MSVC mitnehmen, ein Mac-Port ist auch in
Arbeit.Für den MSVC wrappt Allegro DirectX, arbeitet aber auch mit dem GDI. Teile
des DirectX-SDK sind jedoch vonnöten.
Ein Programm wird als Konsolenanwendung erstellt und läuft dann mit DirectX,
oder eben unter dem GDI.
(Okay, es gibt noch fehlende Implementierungen, z.B. MIDI In).
Unterm Strich sieht man aber weder von der WinAPI etwas, (tatsächlich wird
intern schon dabei gearbeitet) noch muss man unbedingt einen DirectX-Befehl
verwenden. Man kann jedoch durchaus beides einfliessen lassen. (Sogar eine
frühe AllegroGL-Alpha für OpenGL-Freunde ist verfügbar.)Mit der Einrichtung gibt es jedoch immer wieder Probleme.
Nicht zuletzt, weil diese Dinge durchaus noch ein wenig in Arbeit sind.Ich kann Erfahrungen für 3 'Betriebsarten' von Allegro einbringen:
1. mit dem DJGPP
2. mit MSVC 6.0 und einem vorhandenen SDK ab DirectX 7
3. mit beidem !Zu 1.)
Hardwarevoraussetzungen:
Die Grafikkarte sollte wenigstens über Vesa 1.2 verfügen (aber ein
paar Karten werden direkt unterstützt) und die Soundkarte SB16/Pro-kompatibel
sein (ein paar andere wie AWE32 werden auch unterstützt).Der Compiler und die IDE:
Links und Hilfestellungen zum Einrichten des DJGPP gibt es hier unter
Stichwort 'Compiler'. Trotzdem kurz hier:
Unter http://www.delorie.com/djgpp den Zippicker zur Auswahl nehmen, C++ nach
Belieben, RHIDE ja, Allegro nein (holt man ja direkt), Sourcen besser auch
nicht, Docs zumindest die FAQ. Alles in einen Ordner DJGPP packen (ich sag'
mal auf C:\, wenn in einen Ordner, dann in einen mit kurzem Namen!)
Pfad des DJGPP\BIN in die Autoexec.bat aufnehmen und dort noch
set DJGPP=C:/djgpp/djgpp.env
booten und fertig!
Im reinen DOS-Umfeld bis DOS 6.22 (ohne lange Dateinamen) wird es insofern
ein wenig kritisch, dass etliche C++ Dateinamen 'lang' sind. Verzichtet man
auf solche Aufrufe (oder patcht sie), geht alles gut. Es ist auch keine
falsche Idee die libstdcxx.lib im Lib-Ordner nochmal nach libstdcx.lib zu
kopieren, wenn man die RHIDE benutzt.Allegro wird dann wie folgt übersetzt:
In den Allegro-Ordner rein (auf DOS-Niveau, oder MS-DOS-Eingabeaufforderung),
fix.bat djgpp starten,
hiernach make und danach make install.Zu 2.)
Wer lieber MSVC hat, aber eben Probleme mit WinAPI und DirectX (oder eben
platformunabgängig werden möchte), kann Allegro für MSVC benutzen.
Voraussetzung ist -wie gesagt - ein Teil des DirectX-SDK!
Für DirectX7 gibt es ein kleines ausreichendes Paket auf der Allegro-Site zum
Download. (Für ein 8er-Päckchen mich mal ansprechen).
Und nun hat man zwei Möglichkeiten:
Wer Allegro ständig auf dem neuesten Stand halten will und es selbst
compilieren möchte, braucht den DJGPP als Hostcompiler. Der steuert dann den
MSVC fern. (siehe Punkt 3.)
Wer das nicht möchte, kann sich das ..._bin-Extrapaket downloaden, in dem die
notwendigen DLLs und Libs sind. (Soweit ich weiß, mit der professionellen
Edition erstellt, also sehr viel schneller als die mit der Standardedition
erstellten. Also auch interessant für WinAPI-Liebhaber, die nur die nicht
optimierende Standardedition besitzen.)Dort findet sich auch eine Zusatzbatch für die Erstellung der
notwendigen anderen Files und Examples namens msvcmake.bat.
Das Einrichteverfahren habe ich gerade noch mal durchgespielt:
(Angenommen DirectX-SDK ist schon eingerichtet)
Original-Source/Header-Paket holen, DLL-Paket holen, demo.dat holen.
Alles zusammen in den gleichen Ordner auspacken (auch einen Ordner mit kurzem
Namen wählen!). In diesem Ordner nun
fix.bat msvc
starten und danach
msvcmake.bat
Es gibt ggf. Warnings, die nicht schlimm sind. Kompiliert er nun brav etliche
c-Files, sind das die Beispiele und alles ist gut. Zuletzt fragt er nach dem
Kopieren von Headern, Libs und Dll, was unbedingt zu bejahen ist. Fertig!Zu 3.)
Wer mit DJGPP und MSVC Allegro selbst compilieren möchte, muss den DJGPP
schon mal ordentlich installiert haben. Dann wird Allegro ganz normal in den
DJGPP-Ordner entpackt.
Nun muss man die im VC-Verzeichnis enthaltene vcvars32.bat in seine
Autoexec.bat einbringen. Eventuell läuft man nun Gefahr, dass der
Environment-Speicher überläuft und deshalb sollte ggf. in die config.sys
folgende Zeile rein:
SHELL=C:\COMMAND.COM /E:2048
Warnung/Troubleshooting:
Manchmal passt das Windows gar nicht. Es bootet, meldet einen
Dateischreibfehler und streikt! Ich weiß nicht, ob meine Maßnahme
pures Glück war, aber ich habe die Datei msdos.--- mal in einen anderen
Ordner versteckt. Danach ging alles und Windows macht keine Probleme.
Ich weiß nicht, was diese Datei da soll, es kann meines Erachtens
nur die Ur-msdos.sys sein, die eigentlich auf einer Startupdisk
zu finden ist. Möglicherweise hat er dann Probleme eine Bootdiskette zu
erstellen. Hier möchte ich für nichts garantieren! (Für Infos dankbar!)
Gut, angenommen wir sind soweit. Dann in den Allegro-Ordner, dort fix.bat
msvc rufen und auch hier make und make install rufen. Vielleicht vorher alle
in den Ordnern setup, demo, tools und examples mit DJGPP erstellten Exes
irgendwohin retten, denn die werden überschrieben. Ich habe sogar einen
frischen Allegro-Ordner erstellt (den Allegro-Ordner für DJGPP kurz
umbenannt, für MSVC übersetzt, diesen dann wAllegro genannt (weil man ausser
den Beispielen nichts mehr braucht, Header etc. sind ja kopiert) und dem
DJGPP-Allegro seinen alten Namen wiedergegeben.Ein Programm erstellt man nun (für 2. und auch für 3.) als Konsolenanwendung,
setzt in den C/C++-Einstellungen bei den defines USE_CONSOLE hintendran und
beim Linker alleg.lib. Erstellen und fertig!Für andere Compiler und Linux kann ich leider nichts sagen.
Ich habe schon bei einer Einrichtung für den BC 5.5 geholfen, die letztlich
erfolgreich war, aber dazu braucht man (wie auch für den BCB) Bestandteile
von MSVC.
Vielleicht füllen andere die Lücken für andere Compiler.WICHTIG: Alle diese Infos basieren auf dem heutigen Stand der Dinge.
Inwieweit sich da noch Dinge ändern, kann ich leider nicht wissen, denn ich
bin auch nur ein einfacher Allegro-User.(Julian) Der Beitrag wurde von mir Aufgrund eines Updates von Bits&Bytes, der den Beitrag nicht mehr bearbeiten kann, editiert - – ein Dankeschön an Bits&Bytes
[ 13.08.2001: Beitrag editiert von: Julian ]
[ Dieser Beitrag wurde am 26.09.2002 um 21:04 Uhr von Headhunter editiert. ]
-
Diesen Beitrag verschieben wir mal ins Archiv für Grafik/Spieleprogrammierung. images/smiles/icon_smile.gif