„Lightweight Java Game Library“ – Versionsunterschied
[gesichtete Version] | [gesichtete Version] |
vektorgrafik |
gemeint ist https://github.com/nothings/stb |
||
(40 dazwischenliegende Versionen von 34 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
{{Infobox Software |
{{Infobox Software |
||
| |
|Name = Lightweight Java Game Library |
||
| |
|Logo = [[Datei:Lwjgl.svg|250px]] |
||
| |
|Screenshot = |
||
| |
|Beschreibung = |
||
| |
|Maintainer = |
||
| |
|Hersteller = Ioannis Tsakpinis und das LWJGL Team |
||
|Erscheinungsjahr = |
|||
| Management = |
|||
| |
|AktuelleVersion = <!-- Wikidata --> |
||
| |
|AktuelleVersionFreigabeDatum = <!-- Wikidata --> |
||
| |
|AktuelleVorabVersion = |
||
| |
|AktuelleVorabVersionFreigabeDatum = |
||
| |
|Betriebssystem = [[plattformunabhängig]] |
||
| |
|Programmiersprache = [[Java (Programmiersprache)|Java]] |
||
| |
|Kategorie = |
||
| |
|Lizenz = [[BSD-Lizenz]] |
||
| |
|Deutsch = |
||
| |
|Website = [https://www.lwjgl.org/ www.lwjgl.org] |
||
|Dateien = |
|||
}} |
}} |
||
Die '''Lightweight Java Game Library''' (LWJGL) ist eine Programmbibliothek für die [[Programmiersprache]] [[Java (Programmiersprache)|Java]] mit dem Fokus auf Spieleentwicklung. |
Die '''Lightweight Java Game Library''' (LWJGL) ist eine [[Programmbibliothek]] für die [[Programmiersprache]] [[Java (Programmiersprache)|Java]] mit dem Fokus auf Spieleentwicklung. |
||
Mithilfe von LWJGL kann ein Java-Programmierer auf [[OpenGL]]-, [[OpenAL]]- und [[OpenCL]]-Funktionen zugreifen. OpenGL wird bis Version 4. |
Mithilfe von LWJGL kann ein Java-Programmierer auf [[OpenGL]]-, [[OpenAL]]- und [[OpenCL]]-Funktionen zugreifen. OpenGL wird bis Version 4.5 mit den wichtigsten Extensions unterstützt, OpenAL ist bis Version 1.1 implementiert, OpenCL ist bis Version 2.0 implementiert. Seit späteren Alpha-Versionen besteht ebenfalls die Möglichkeit zur Verwendung von [[DevIL]] zum Laden und Bearbeiten von Bildern und [[FMOD (Musik-Bibliothek)|FMOD]] zum Laden und Abspielen von Musikdateien. Die DevIL- und FMOD-Unterstützung wurde mit LWJGL 1.0 allerdings wieder entfernt. Die Begründung liegt darin, dass DevIL-Methoden auch in Java implementiert werden könnten und für FMOD bereits andere Implementierungen in Java vorliegen. – LWJGL unterstützt außerdem die Behandlung von [[Tastatur]]-, [[Maus (Computer)|Maus]]- und Controllereingaben ([[Joystick]], [[Gamepad]], [[Paddle (Eingabegerät)|Paddle]], …). Damit ist LWJGL eine plattformunabhängige Alternative zu [[Microsoft]] [[DirectX]]. |
||
Seit dem 13. November 2014 wird an der komplett neu entwickelten Version LWJGL 3.0 gearbeitet. In dieser wurden unter anderem [[GLFW]] für die Kontext-, Fenstererstellung und Eingabefunktionen eingebunden, sowie ''stb'' für das Laden von Bildern, Schriftarten und [[Ogg Vorbis]]. Während der Beta-Phase wurden Bindungen für [[EGL (Programmierschnittstelle)|EGL]] und [[OpenGL ES]] eingefügt. In einem zukünftigen Update sollen noch Bindungen für [[Vulkan (API)|Vulkan]] eingefügt werden.<ref>[http://www.lwjgl.org/#start LWJGL3 - Main Features]</ref> Da LWJGL3 modular aufgebaut ist, wird möglicherweise [[AMD Mantle|Mantle]] und [[Direct3D]] zusätzlich unterstützt.<ref>[http://blog.lwjgl.org/lwjgl-3-0a-released/ LWJGL 3.0.0a released], 27. April 2015</ref> |
|||
Die Bibliothek steht unter einer [[BSD-Lizenz]], darf also frei verwendet werden, und wurde von Caspian Rychlik-Prince, einem Mitglied von [[PuppyGames]], initiiert. |
Die Bibliothek steht unter einer [[BSD-Lizenz]], darf also frei verwendet werden, und wurde von Caspian Rychlik-Prince, einem Mitglied von [[PuppyGames]], initiiert. |
||
== Ziele == |
== Ziele == |
||
Der Entwurf von LWJGL wurde hinsichtlich folgender Ziele optimiert:<ref> |
Der Entwurf von LWJGL wurde hinsichtlich folgender Ziele optimiert:<ref>{{Webarchiv|url=http://legacy.lwjgl.org/about.php |wayback=20160304223011 |text=About LWJGL |archiv-bot=2018-12-11 09:46:02 InternetArchiveBot }}</ref> |
||
; Geschwindigkeit: Beispielsweise durch Entfernung von Methoden die für effiziente [[C (Programmiersprache)|C]] |
; Geschwindigkeit: Beispielsweise durch Entfernung von Methoden, die für effiziente [[C (Programmiersprache)|C]]-Programmierung gedacht waren, aber für Java nicht geeignet sind, wie zum Beispiel <code>glColor3fv</code>. Sicherstellung beim Start, dass Hardware-Beschleunigung verfügbar ist. |
||
; Portabilität: Die Bibliothek wurde so entworfen, dass sie sowohl auf kleinen Geräten wie [[Mobiltelefon|Handys]] als auch auf [[Mehrprozessorsystem|Multiprozessor]]-[[Bildsynthese|Rendering]]-[[Server]]n läuft. |
; Portabilität: Die Bibliothek wurde so entworfen, dass sie sowohl auf kleinen Geräten wie [[Mobiltelefon|Handys]] als auch auf [[Mehrprozessorsystem|Multiprozessor]]-[[Bildsynthese|Rendering]]-[[Server]]n läuft. |
||
; Einfachheit: Die Bibliothek wurde so entwickelt, dass sie sowohl für Anfänger leicht zu benutzen ist als auch für Profis, die damit professionelle Anwendungen entwickeln möchten. |
; Einfachheit: Die Bibliothek wurde so entwickelt, dass sie sowohl für Anfänger leicht zu benutzen ist, als auch für Profis, die damit professionelle Anwendungen entwickeln möchten. |
||
; Minimalismus: Damit die Portabilität bestehen bleibt, ist es hilfreich wenn die [[Programmierschnittstelle|API]] klein ist. Ein minimaler Umfang an Funktionen ermöglicht eine bessere Übersicht über die Möglichkeiten und führt zu weniger Fehlern im Code. Es wurden nur Methoden in die Library aufgenommen, die nicht direkt mit Java ausgeführt werden können, |
; Minimalismus: Damit die Portabilität bestehen bleibt, ist es hilfreich, wenn die [[Programmierschnittstelle|API]] klein ist. Ein minimaler Umfang an Funktionen ermöglicht eine bessere Übersicht über die Möglichkeiten und führt zu weniger Fehlern im Code. Es wurden nur Methoden in die Library aufgenommen, die nicht direkt mit Java ausgeführt werden können, weshalb auch [[OpenGL Utility Library|GLU]] bis auf einige wichtige Methoden entfernt wurde. |
||
; Sicherheit: Es werden keine [[Zeiger (Informatik)|Pointer]] sondern [[Puffer (Informatik)|Buffer]] verwendet. Die Buffer-Positionen werden allerdings überprüft um sicherzustellen, dass die Werte innerhalb des erlaubten Bereichs |
; Sicherheit: Es werden keine [[Zeiger (Informatik)|Pointer]], sondern [[Puffer (Informatik)|Buffer]] verwendet. Die Buffer-Positionen werden allerdings überprüft, um sicherzustellen, dass die Werte innerhalb des erlaubten Bereichs liegen. |
||
; Robustheit: OpenGL-Fehlerüberprüfung werden im Java-Code abgebildet anstatt in einer separaten [[Dynamic Link Library|DLL]]. Dabei handelt es sich um [[Laufzeitfehler|Runtime-Exceptions]] statt [[Ausnahmebehandlung# |
; Robustheit: OpenGL-Fehlerüberprüfung werden im Java-Code abgebildet anstatt in einer separaten [[Dynamic Link Library|DLL]]. Dabei handelt es sich um [[Laufzeitfehler|Runtime-Exceptions]] statt [[Ausnahmebehandlung#Checked Exceptions|Checked-Exceptions]] (damit weniger [[Ausnahmebehandlung|try-catch-Anweisungen]] nötig sind). |
||
== Alternativen == |
== Alternativen == |
||
* [[ |
* [[JOGL]] |
||
* [[GL4Java]] (seit 2001 nicht mehr aktualisiert) |
|||
== Auf LWJGL aufbauende Software == |
== Auf LWJGL aufbauende Software == |
||
LWJGL wird von einer Reihe von Programmen, insbesondere Computerspielen verwendet. |
LWJGL wird von einer Reihe von Programmen, insbesondere Computerspielen verwendet.<ref>{{Webarchiv|url=http://legacy.lwjgl.org/projects.php |wayback=20151110034437 |text=LWJGL Projects |archiv-bot=2018-12-11 09:46:02 InternetArchiveBot }}</ref> Dazu zählen [[Minecraft]], Tribal Trouble oder Sokobano. |
||
== Weblinks == |
== Weblinks == |
||
* [http:// |
* [http://lwjgl.org/wiki/ Legacy LWJGL-Wiki (bis Version 2.9.3)] |
||
* [https://github.com/LWJGL/lwjgl3 LWJGL3-Projekt auf GitHub] |
|||
* [http://lwjgl.org/wiki/ LWJGL-Wiki] |
|||
* [https://github.com/LWJGL/lwjgl3-wiki/wiki LWJGL3-Wiki auf GitHub] |
|||
* [http://sourceforge.net/projects/java-game-lib LWJGL-Projekt bei SourceForge] |
|||
== Einzelnachweise == |
== Einzelnachweise == |
||
<references/> |
<references /> |
||
[[Kategorie:Grafikbibliothek]] |
[[Kategorie:Grafikbibliothek]] |
||
[[Kategorie:Java-Bibliothek]] |
[[Kategorie:Java-Bibliothek]] |
||
[[Kategorie:Freie Systemsoftware]] |
[[Kategorie:Freie Systemsoftware]] |
||
[[en:Lightweight Java Game Library]] |
|||
[[es:LWJGL]] |
|||
[[nl:Lightweight Java Game Library]] |
Aktuelle Version vom 2. Mai 2022, 17:09 Uhr
Lightweight Java Game Library
| |
---|---|
![]() | |
Basisdaten
| |
Entwickler | Ioannis Tsakpinis und das LWJGL Team |
Aktuelle Version | 3.3.6[1] (4. Januar 2025) |
Betriebssystem | plattformunabhängig |
Programmiersprache | Java |
Lizenz | BSD-Lizenz |
www.lwjgl.org |
Die Lightweight Java Game Library (LWJGL) ist eine Programmbibliothek für die Programmiersprache Java mit dem Fokus auf Spieleentwicklung. Mithilfe von LWJGL kann ein Java-Programmierer auf OpenGL-, OpenAL- und OpenCL-Funktionen zugreifen. OpenGL wird bis Version 4.5 mit den wichtigsten Extensions unterstützt, OpenAL ist bis Version 1.1 implementiert, OpenCL ist bis Version 2.0 implementiert. Seit späteren Alpha-Versionen besteht ebenfalls die Möglichkeit zur Verwendung von DevIL zum Laden und Bearbeiten von Bildern und FMOD zum Laden und Abspielen von Musikdateien. Die DevIL- und FMOD-Unterstützung wurde mit LWJGL 1.0 allerdings wieder entfernt. Die Begründung liegt darin, dass DevIL-Methoden auch in Java implementiert werden könnten und für FMOD bereits andere Implementierungen in Java vorliegen. – LWJGL unterstützt außerdem die Behandlung von Tastatur-, Maus- und Controllereingaben (Joystick, Gamepad, Paddle, …). Damit ist LWJGL eine plattformunabhängige Alternative zu Microsoft DirectX.
Seit dem 13. November 2014 wird an der komplett neu entwickelten Version LWJGL 3.0 gearbeitet. In dieser wurden unter anderem GLFW für die Kontext-, Fenstererstellung und Eingabefunktionen eingebunden, sowie stb für das Laden von Bildern, Schriftarten und Ogg Vorbis. Während der Beta-Phase wurden Bindungen für EGL und OpenGL ES eingefügt. In einem zukünftigen Update sollen noch Bindungen für Vulkan eingefügt werden.[2] Da LWJGL3 modular aufgebaut ist, wird möglicherweise Mantle und Direct3D zusätzlich unterstützt.[3]
Die Bibliothek steht unter einer BSD-Lizenz, darf also frei verwendet werden, und wurde von Caspian Rychlik-Prince, einem Mitglied von PuppyGames, initiiert.
Ziele
[Bearbeiten | Quelltext bearbeiten]Der Entwurf von LWJGL wurde hinsichtlich folgender Ziele optimiert:[4]
- Geschwindigkeit
- Beispielsweise durch Entfernung von Methoden, die für effiziente C-Programmierung gedacht waren, aber für Java nicht geeignet sind, wie zum Beispiel
glColor3fv
. Sicherstellung beim Start, dass Hardware-Beschleunigung verfügbar ist. - Portabilität
- Die Bibliothek wurde so entworfen, dass sie sowohl auf kleinen Geräten wie Handys als auch auf Multiprozessor-Rendering-Servern läuft.
- Einfachheit
- Die Bibliothek wurde so entwickelt, dass sie sowohl für Anfänger leicht zu benutzen ist, als auch für Profis, die damit professionelle Anwendungen entwickeln möchten.
- Minimalismus
- Damit die Portabilität bestehen bleibt, ist es hilfreich, wenn die API klein ist. Ein minimaler Umfang an Funktionen ermöglicht eine bessere Übersicht über die Möglichkeiten und führt zu weniger Fehlern im Code. Es wurden nur Methoden in die Library aufgenommen, die nicht direkt mit Java ausgeführt werden können, weshalb auch GLU bis auf einige wichtige Methoden entfernt wurde.
- Sicherheit
- Es werden keine Pointer, sondern Buffer verwendet. Die Buffer-Positionen werden allerdings überprüft, um sicherzustellen, dass die Werte innerhalb des erlaubten Bereichs liegen.
- Robustheit
- OpenGL-Fehlerüberprüfung werden im Java-Code abgebildet anstatt in einer separaten DLL. Dabei handelt es sich um Runtime-Exceptions statt Checked-Exceptions (damit weniger try-catch-Anweisungen nötig sind).
Alternativen
[Bearbeiten | Quelltext bearbeiten]Auf LWJGL aufbauende Software
[Bearbeiten | Quelltext bearbeiten]LWJGL wird von einer Reihe von Programmen, insbesondere Computerspielen verwendet.[5] Dazu zählen Minecraft, Tribal Trouble oder Sokobano.
Weblinks
[Bearbeiten | Quelltext bearbeiten]Einzelnachweise
[Bearbeiten | Quelltext bearbeiten]- ↑ Release 3.3.6. 4. Januar 2025 (abgerufen am 26. Januar 2025).
- ↑ LWJGL3 - Main Features
- ↑ LWJGL 3.0.0a released, 27. April 2015
- ↑ About LWJGL ( des vom 4. März 2016 im Internet Archive) Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.
- ↑ LWJGL Projects ( des vom 10. November 2015 im Internet Archive) Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.