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


Anmelden zum Antworten