Zum Inhalt springen

Allegro (Programmbibliothek)

aus Wikipedia, der freien Enzyklopädie
{{#if: | | {{#invoke:WLink|getArticleBase}} }}

{{#if: Datei:Allegro-logo.svg |

colspan="2" class="notheme" style="text-align:center; background:#Vorlage:Standardfarbe; color:#202122;" | Datei:Allegro-logo.svg |
 {{#if: {{#invoke:Wikidata|claim|P154}} | 
[[Datei:{{#invoke:Wikidata|claim|P154}}|150px]]
 }}

}}{{#if: |

{{#if: |
}}|

}}

Basisdaten

{{#if: |

Hauptentwickler
 {{#if: {{#invoke:Wikidata|claim|P126}} | 
Maintainer claim|P126|parameter=link|references=ja|list=, }}
 }}

}}{{#if: |

Entwickler
 {{#if: {{#invoke:Wikidata|claim|P178}} | 
Entwickler claim|P178|parameter=link|references=ja|list=, }}
 }}

}}{{#if: 1990 |

Erscheinungsjahr
 {{#if: {{#invoke:Wikidata|claim|P577}} | 
Erscheinungsjahr claim|P577|references=ja|list=, }} |
   {{#if: {{#invoke:Wikidata|claim|P571}} | 
Erscheinungsjahr claim|P571|references=ja|list=, }}
   }}
 }}

}}{{#ifeq: Allegro 5.2.9.1 | KEINE_ANGABE || {{#if: Allegro 5.2.9.1 |

Aktuelle Version
({{#if: | Vorlage:Datum – die Form mit drei unbenannten Parametern oder anderen einzelnen Zeiteinheiten ist veraltet und wird nicht mehr unterstützt. Bitte gib das Datum einfach im Klartext an.
format 19. Januar 2024 | {{#timefl:now|date}}}} {{{2}}} | T._Monat JJJJ}} lang= {{#switch: -|=de #default=de-AT
            }}
   }}

}}) }}

 {{#if: {{#invoke:Wikidata|claim|P348|P548|!Q3295609,Q51930650,Q2122918,Q21727724,Q1072356,Q6736813}} | 
Aktuelle Version claim|P348|P548|!Q3295609,Q51930650,Q2122918,Q21727724,Q1072356,Q6736813|references=ja}} {{#if: {{#invoke:Wikidata|claim|P348|P548|!Q3295609,Q51930650,Q2122918,Q21727724,Q1072356,Q6736813|qualifier=P577}} |
({{#invoke:Wikidata|claim|P348|P548|!Q3295609,Q51930650,Q2122918,Q21727724,Q1072356,Q6736813|qualifier=P577}}) }}}}}}

}}{{#ifeq: | KEINE_ANGABE || {{#if: |

Aktuelle Vorabversion
({{#if: | Vorlage:Datum – die Form mit drei unbenannten Parametern oder anderen einzelnen Zeiteinheiten ist veraltet und wird nicht mehr unterstützt. Bitte gib das Datum einfach im Klartext an.
format | {{#timefl:now|date}}}} {{{2}}} | T._Monat JJJJ}} lang= {{#switch: -|=de #default=de-AT
            }}
   }}

}}) }}

 {{#if: {{#invoke:Wikidata|claim|P348|P548|Q1072356,Q51930650,Q3295609,Q2122918,Q21727724}} | 
Aktuelle Vorabversion claim|P348|P548|Q1072356,Q51930650,Q3295609,Q2122918,Q21727724|references=ja}} {{#if: {{#invoke:Wikidata|claim|P348|P548|Q1072356,Q51930650,Q3295609,Q2122918,Q21727724|qualifier=P577}} |
({{#invoke:Wikidata|claim|P348|P548|Q1072356,Q51930650,Q3295609,Q2122918,Q21727724|qualifier=P577}}) }}}}}}

}}{{#if: |

Ausführungsumgebung
 {{#if: Windows, Linux, macOS | 
Betriebssystem
   {{#if: {{#invoke:Wikidata|claim|P306}} | 
Betriebssystem claim|P306|parameter=link|references=ja|list=, }}
   }}
 }}

}}{{#if: C |

Programmier­sprache C |
 {{#if: {{#invoke:Wikidata|claim|P277}} | 
Programmier­sprache claim|P277|parameter=link|references=ja|list=, }}
 }}

}}{{#if: |

Kategorie

}}{{#if: zlib-Lizenz |

Lizenz zlib-Lizenz |
 {{#if: {{#invoke:Wikidata|claim|P275}} | 
Lizenz claim|P275|parameter=link|references=ja|list=, }}
 }}

}}{{#if: |

deutschsprachig faculty|}} | ja | nein }}

}}{{#if: |

Sonstiges {{{Sonstiges}}}Vorlage:Infobox Software/Wartung/Sonstiges

}}{{#if: liballeg.org |

liballeg.org |
 {{#if: {{#invoke:Wikidata|claim|P856|notdeprecated=1}} | 
{{#invoke: WLink | formatURL | {{#invoke:Wikidata|claim|P856|parameter=link|notdeprecated=1}}}}
 }}

}}{{#if: |

Dateien [[c:Category:Created with |]]

}}

Allegro ist eine in C geschriebene, freie Bibliothek für die Programmierung von Computerspielen in C, C++ und anderen Sprachen. Allegros Lizenz (zlib-Lizenz) schränkt Verwendung, Veränderung und Vertrieb der Bibliothek in keiner Weise ein.

Ein großer Vorteil ist die Portabilität von Allegro. Programme lassen sich meist ohne Änderungen unter einer Vielzahl von Betriebssystemen kompilieren und ausführen. In der aktuellen stabilen Version 5.0 werden Windows, Unix (Linux, FreeBSD, Irix, Solaris, Darwin) sowie macOS und iOS unterstützt.

Zu den grundlegenden Leistungen Allegros zählen Funktionen und Datenstrukturen für zweidimensionale Grafik, Tonausgabe, Benutzereingaben und die zeitliche Steuerung von Programmen. Darüber hinaus liefert die Bibliothek Unterstützung für mathematische Berechnungen, einfache 3D-Computergrafik, komprimierte Daten, Dateisysteme und eine einfache grafische Benutzeroberfläche.

Einsteigerfreundlichkeit

Allegro erfüllt ähnliche Aufgaben wie die Simple DirectMedia Layer, abstrahiert jedoch etwas weiter von den Hardware-Grundlagen und bietet mehr Funktionalität „out of the box“, weswegen weniger Zusatzbibliotheken benötigt werden. Allegro wird außerdem mit einer umfangreichen und verständlichen Dokumentation und vielen Beispielprogrammen ausgeliefert. Einsteigern ist Allegro aus diesen Gründen relativ leicht zugänglich.

Geschichte und Hinterlassenschaften

Vorlage:Hinweisbaustein{{#if: ||{{#if:{{#iferror:{{#ifexpr:{{#switch: | R+ = abs | R- = -abs | Z = trunc | Z+ | N = abs trunc

| Z- = -abs trunc}}(2013) = (2013) {{#if: | round ({{{3}}}) }} | 1 }} }}|{{#switch:2013|2025|2024|2023|2022|2021|2020|2019|2018|2017|2016|2015|2014|2013|2012|2011|2010|2009|2008|2007|2006|2005|2004|2003|2002|2001|2000|1999|1998|1997|1996|1995|1994|1993|1992|1991|1990|1989|1988|1987|1986|1985|1984|1983|1982|1981|1980|1979|1978|1977|1976|1975|1974|1973|1972|1971|1970|1969|1968|1967|1966|1965|1964|1963|1962|1961|1960|1959|1958|1957|1956|1955|1954|1953|1952|1951|1950|1949|1948|1947|1946|1945|1944|1943|1942|1941|1940|1939|1938|1937|1936|1935|1934|1933|1932|1931|1930|1929|1928|1927|1926|1925|1924|1923|1922|1921|1920|1919|1918|1917|1916|1915|1914|1913|1912|1911|1910|1909|1908|1907|1906|1905|1904|1903|1902|1901|1900=|#default=}}|}}

}}

Allegros Wurzeln liegen in den frühen 1990er Jahren auf dem Atari ST. Die größte Bekanntheit erreichte es als Bibliothek für DJGPP, die DOS-Version der GNU Compiler Collection. Demzufolge besitzt es noch viele Routinen für die Unterstützung von DOS. Die Unterstützung für leistungsfähige Hardware, um beispielsweise Farben schnell zu mischen, und insbesondere die Anbindung an OpenGL sind im reinen Allegro noch nicht so ausgereift wie in SDL. Die Erweiterungen FBlend und AllegroGL gleichen diesen Nachteil jedoch aus.

Historisch gewachsen sind einige weitere Probleme der derzeitigen API: Teilweise sind verwendete Begriffe ungebräuchlich oder veraltet. Viele gleichwertige oder ähnliche Funktionen ließen sich zusammenfassen. Bei einigen angebotenen Routinen stellt sich die Frage, ob diese für moderne Systeme überhaupt noch zeitgemäß sind, oder ob nicht externe Angebote diese Aufgaben besser lösen könnten. Das gilt z. B. für die Festkommaarithmetik und die Software-3D-Routinen. Allegros Benutzeroberfläche wurde hauptsächlich für die vielen beiliegenden Tools eingeführt. Es stehen mehrere leistungsstarke Erweiterungen bereit, um eigene Programme ansprechender zu gestalten.

Viele der angesprochenen Nachteile sollten in einer neuen Version 5 behoben werden. Aus Zeitmangel ist die Entwicklung nach einer kurzen aktiven Phase im Jahr 2001 aber relativ langsam vorangeschritten.

Allegro 5 erhält eine komplett überarbeitete API sowie auf aktuellere Hardware zugeschnittenen Grafik-Code und ein ereignisbasiertes Eingabe- und Timer-System. Gleichzeitig zur Entwicklung der Version 5 im aktuellen Entwicklungszweig 4.9 gibt es auch Pläne, nach Erscheinen der stabilen Version 4.2.2 an einer Version 4.4 zu arbeiten, die auf dem alten Code basiert, aber einige Add-ons wie AllegroGL integrieren soll.<ref><templatestyles src="Webarchiv/styles.css" />{{#if:20130701075437

      | {{#ifeq: 20130701075437 | *
    | Vorlage:Webarchiv/Wartung/Stern{{#if: offizielle Roadmap | {{#invoke:WLink|getEscapedTitle|offizielle Roadmap}} | {{#invoke:Webarchiv|getdomain|http://wiki.allegro.cc/index.php?title=Allegro_roadmap}} }} (Archivversionen)
    | {{#iferror: {{#time: j. F Y|20130701075437}}
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/DatumDer Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein!
         | {{#if: offizielle Roadmap | {{#invoke:WLink|getEscapedTitle|offizielle Roadmap}} | {{#invoke:Webarchiv|getdomain|http://wiki.allegro.cc/index.php?title=Allegro_roadmap}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if:  | {{{archiv-bot}}} |  }} |  des Vorlage:Referrer }} vom {{#time: j. F Y|20130701075437}} im Internet Archive{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
      }}
  }}
      | {{#if:
          | {{#iferror: {{#time: j. F Y|{{{webciteID}}}}}
    | {{#switch: {{#invoke:Str|len|{{{webciteID}}}}}
       | 16= {{#if: offizielle Roadmap | {{#invoke:WLink|getEscapedTitle|offizielle Roadmap}} | {{#invoke:Webarchiv|getdomain|http://wiki.allegro.cc/index.php?title=Allegro_roadmap}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if:  | {{{archiv-bot}}} |  }} |  des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
       | 9 = {{#if: offizielle Roadmap | {{#invoke:WLink|getEscapedTitle|offizielle Roadmap}} | {{#invoke:Webarchiv|getdomain|http://wiki.allegro.cc/index.php?title=Allegro_roadmap}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if:  | {{{archiv-bot}}} |  }} |  des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
       | #default= Der Wert des Parameters {{#if: webciteID | webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!Vorlage:Webarchiv/Wartung/webcitation{{#if:  || }}
      }}
    | c|{{{webciteID}}}}} {{#if: offizielle Roadmap | {{#invoke:WLink|getEscapedTitle|offizielle Roadmap}} | {{#invoke:Webarchiv|getdomain|http://wiki.allegro.cc/index.php?title=Allegro_roadmap}} }} (Memento{{#if: {{#if:  | {{{archiv-bot}}} |  }} |  des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
  }}
          | {{#if: 
              | Vorlage:Webarchiv/Today
              | {{#if:
                      | Vorlage:Webarchiv/Generisch
                      | {{#if: offizielle Roadmap | {{#invoke:WLink|getEscapedTitle|offizielle Roadmap}} | {{#invoke:Webarchiv|getdomain|http://wiki.allegro.cc/index.php?title=Allegro_roadmap}} }}  
                 }}}}}}}}{{#if:
    | Vorlage:Webarchiv/archiv-bot
  }}{{#invoke:TemplatePar|check
     |all      = url=
     |opt      = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original=
     |cat      = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
     |errNS    = 0
     |template = Vorlage:Webarchiv
     |format   = *
     |preview  = 1
  }}{{#ifexpr: {{#if:20130701075437|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
    | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
  }}{{#if: 
    | {{#switch: {{#invoke:Webarchiv|getdomain|{{{archiv-url}}}}}
        | web.archive.org = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}} 
        | webcitation.org = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}} 
        | archive.today |archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
      }}{{#if: 
         | {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}
             | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}}
          |  }} 
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
      }}
    | {{#if: 
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
      }}
  }}{{#if:{{#invoke:URLutil|isHostPathResource|http://wiki.allegro.cc/index.php?title=Allegro_roadmap}}
    || {{#if:  || }}
  }}{{#if: offizielle Roadmap
    | {{#if: {{#invoke:WLink|isBracketedLink|offizielle Roadmap}}
        | {{#if:  || }}
      }}
    | {{#if:  || }}Vorlage:Webarchiv/Wartung/Linktext_fehlt
  }}{{#switch: 
    |addlarchives|addlpages= {{#if:  || }}{{#if: 1 |Vorlage:Webarchiv/Wartung/Parameter}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
  }}{{#ifeq: {{#invoke:Str|find|http://wiki.allegro.cc/index.php?title=Allegro_roadmap%7Carchiv}} |-1
    || {{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|http://wiki.allegro.cc/index.php?title=Allegro_roadmap%7C4}}%7Chttp}} |-1
         || {{#switch: {{#invoke:Webarchiv|getdomain|http://wiki.allegro.cc/index.php?title=Allegro_roadmap }}
              | abendblatt.de | daserste.ndr.de | inarchive.com | webcitation.org = 
              | #default = {{#if:  || }}{{#if: 1 |Vorlage:Webarchiv/Wartung/URL}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
            }} 
       }}
  }} auf der Wiki-Seite von Allegro</ref>

Während die Software bisher als „Giftware“ veröffentlicht wurde, wird sie ab Version 5 unter der zlib-Lizenz veröffentlicht.

Siehe auch

Literatur

  • Lennart Steinke: Spieleprogrammierung. bhv, 2003, ISBN 3-8266-8075-8
  • Jonathan Harbour: Game Programming All in One, Second Edition. Muska & Lipman/Premier-Trade 2004, ISBN 1-59200-383-4 (englisch)

Weblinks

Einzelnachweise

<references />