Bei der Unit glBitmap handelt es sich um einen Texturen Loader der ursprünglich nur für Windows (Delphi) verfügbar war. Die Idee dazu kam mir vor einigen Jahren, da mir die bestehenden Loadern nicht komplex genug waren. Mittlerweile unterstützt die Unit die gebräuchlichsten Datei und Texturformate. Die aktuelle Version bietet auch Unterstützung für FreePascal und somit auch für Linux.
Eine ausführliche Dokumentation zur glBitmap gibt es nur bedingt. Denn die Dokumentation im Wiki von DGL ist seit geraumer Zeit nicht mehr aktuell und es wird noch eine Weile dauern bis ich die Zeit finde sie entsprechend zu überarbeiten.
Unterstützte Dateiformate:
-
TARGA (*.tga)
- 8, 16, 24 und 32 Bit
- komprimiert und unkomprimiert
- Ursprung oben links und unten links
-
JPEG (*.jpg)
- Graustufen und RGB
-
Windows Bitmaps (*.bmp)
- 8 (ignoriert Palette), 16, 24, 32 Bit
-
Portable Network Graphic (*.png)
- Graustufen oder RGB mit oder ohne Alphakanal
-
Direct Draw Surfaces (*.dds)
- 8, 16 24, 32 Bit; DXT1, DXT3, DXT5
- Keine Cubemaps
- Keine MipMaps
Hinweise zur Benutzung
Texturausrichtung
Der Loader erzeugt alle Texturen Top-Down. Das bedeutet die oberste Zeile der Textur befindet sich als Erstes im Speicher. Dieses Verhalten ist gegensätzlich zu einigen Loadern für Delphi, zu Windows Bitmap und auch zu einige Modeleditoren/Modelformat. Da ich es persönlich so angenehmer finde und sie an einigen Stellen innerhalb OpenGLs vorrausgesetzt werden, erzeuge ich nur Top-Down Texturen. Dies kann unter Umständen zu Verwirrungen führen. Es gibt aber genügend Möglichkeiten die Texturen zu manipulieren.
Konfiguration externer Schnittstellen
Ab der Version 2.0.0 unterstützt die glBitmap verschiedene Bilbiotheken und Schnittstellen zum Texturdatenaustausch. Da nicht dauerhaft alle aktiv sein können muss man zu Begin erst einmal konfigurieren welche man benutzen möchte. Auf diesen Sachverhalt weiß die glBitmap einem auch mit einer Compilerwarnung hin. Darauf sollte man hören. ;) Zu Auswahl stehen folgende Mögichkeiten.
-
GLB_NO_NATIVE_GL
früher auch (NO_NATIVE_GL
)- Deaktiviert die Benutzung des internen Headers und aktiviert statt dessen die dglOpenGL.pas, den OpenGL Header der Delphi OpenGL Community.
-
GLB_SDL
- Aktiviert die Unterstützung von SDL Surfaces zum Austausch von Texturdaten.
-
GLB_DELPHI
- Aktiviert die Unterstützung von Delphi TBitmaps zum Austausch von Texturdaten.
-
GLB_SDL_IMAGE
- PNGs und JPEGs werden mit SDL_image geladen. Dabei wird GLB_SDL automatisch aktiviert und alle anderen Bibliotheken für PNG und JPEG deaktiviert. SDL_image unterstützt nur das Lesen von PNGs und JPEGs.
-
GLB_PNGIMAGE
früher auch (pngimage
)-
Benutzt die Bibliothek PNGImage zum Lesen und Schreiben von PNGs.
GLB_PNGIMAGE
schließtGLB_LIB_PNG
automatisch aus. Die Bibliothek PNGImage wurde mittlerweile von Codegear, für Delphi 2009, aufgekauft und darf nicht mehr zum freien Download angeboten werden. Entsprechend ist die originale Webseite nicht mehr verfügbar. Der Code wird vermutlich so direkt auch nicht Delphi 2009 funktionieren.
-
Benutzt die Bibliothek PNGImage zum Lesen und Schreiben von PNGs.
-
GLB_LIB_PNG
- Benutzt die Referenzbibliothek libPNG zum Lesen und Schreiben von PNGs. Dabei werden unter Windows noch zwei zusätzliche DLLs benötigt.
-
GLB_DELPHI_JPEG
-
Benutzt die in Delphi eingebaute Implementation zum Lesen und Schreiben von JPEGs.
GLB_DELPHI_JPEG
schließtGLB_LIB_JPEG
automatisch aus.
-
Benutzt die in Delphi eingebaute Implementation zum Lesen und Schreiben von JPEGs.
-
GLB_LIB_JPEG
- Benutzt die Referenzbibliothek libJPEG zum Lesen und Schreiben von JPEGs. Dabei wird unter Windows noch eine zusätzliche DLL benötigt.
Aufgrund von Änderungen meiner persönlicher Interessen wird dieses Projekt nicht weiter fortgeführt.
Download Header
Aktuelle Version: 2.0.3 (21-03-2010) (history)
Download glBitmap.zip (37 kb)
Je nach Konfiguration der Unit werden folgende Quellen benötigt:
Kommentare
Kompatibilität zu Delphi 2009
Weil es damals Probleme mit den Neuerungen in Delphi 2009 gab (irgendwas mit Chars), habe ich in letzter Zeit die ziemlich veraltete Textures.pas benutzt.
Wurden diese Kompatibilitätsprobleme inzwischen behoben oder wird das in absehbarer Zeit noch geschehen?
Da war doch was
Ich hatte irgendwann schon mal was in diese Richtung gemacht. Ich meinte das hätte bei mir sogar schon alles funktioniert. Aber so wie es scheint muss ich das Problem wohl aus den Augen verlohren haben. ;) Ich werde mich die Tage darum kümmern.