|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
darkinsanity aka sts
Anmeldungsdatum: 01.11.2006 Beiträge: 456
|
Verfasst am: 02.12.2008, 13:38 Titel: Library zum laden von Bildern |
|
|
Hi,
nachdem ich mich jetzt schon die ganze Zeit mit Routinen zum laden von TGA´s und PNG´s rumplage, hab ich beschlossen mir einfach eine Library zu suchen, die das für mich macht.
Ich brauch also eine Library, die BMP, TGA und PNG dateien läd, damit ich sie als texturen weiterverwenden kann. Kann mir da jemand eine Library empfehlen?
danke. _________________ Traue keinem Computer, den du nicht aus dem Fenster werfen kannst -- Steve Wozniak |
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
|
Nach oben |
|
|
darkinsanity aka sts
Anmeldungsdatum: 01.11.2006 Beiträge: 456
|
Verfasst am: 02.12.2008, 17:33 Titel: |
|
|
danke, FreeImage sieht so aus als wär es genau die richtige Lib. Aber wo bekomm ich denn die Dateien für Linux her? Auf der sourceforge-Seite konnte man nur die Win32 Version und den source herunterladen. _________________ Traue keinem Computer, den du nicht aus dem Fenster werfen kannst -- Steve Wozniak |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4597 Wohnort: ~/
|
Verfasst am: 02.12.2008, 18:44 Titel: |
|
|
musst du selbst kompilieren (-> README.linux) _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
Heizi
Anmeldungsdatum: 19.01.2005 Beiträge: 309
|
Verfasst am: 03.12.2008, 11:16 Titel: |
|
|
Kanst ja auch SDL probieren.
Installieren lässt es sich glaub ich ganz leicht unter ubuntu.
apt-get install libsdl-dev
kanst auch mal
sudo apt-get install libfreeimage-dev
probieren.
MfG |
|
Nach oben |
|
|
darkinsanity aka sts
Anmeldungsdatum: 01.11.2006 Beiträge: 456
|
Verfasst am: 03.12.2008, 13:25 Titel: |
|
|
ok danke,
ich hab es geschafft das FreeImage meine Texturen läd und OpenGL sie anzeigt, die Farben sind zwar noch irgendwie falsch (PNG) aber das is mir erstmal egal es läuft überhaupt _________________ Traue keinem Computer, den du nicht aus dem Fenster werfen kannst -- Steve Wozniak |
|
Nach oben |
|
|
Lutz Ifer Grillmeister
Anmeldungsdatum: 23.09.2005 Beiträge: 555
|
Verfasst am: 03.12.2008, 16:11 Titel: |
|
|
Das mit den falschen Farben und SDL ist ein bekanntes Problem (mir zumindest) Lösung ist recht einfach:
Ein SDL_Rect kann Bildinformationen in pervers vielen unterschiedlichen Formaten enthalten, in RGBA-Kodierung oder GBR, um nur zwei zu nennen. OpenGL kann auch mit beiden Formaten umgehen - will aber vorher explizit wissen, welcher von beiden es denn ist, siehe der Parameter, der auf "GL_RGBA" oder "GL_GBR" gesetzt ist.
Du hast zwei Möglichkeiten:
- Durch irgendeinen Pfusch und Abfragen der Farbmasken (auch im SDL_Rect enthalten) rausfinden, welche Kodierung vorliegt, und glGenTexture den entsprechenden Parameter übergeben, oder:
- die bessere Variante: ein zweites, temporäres SDL_Rect anlegen, dass die gleichen Dimensionen hat, wie dein ursprüngliches Bild, aber vorgegebenerweise RGBA zur kodierung verwendet. Dann per SDL_Blit auf das zweite SDL_Rect blitten, und das Bild liegt in einer garantiert richtigen Formatierung vor, um glGenTexture mit GL_RGBA zu verwenden.
Der Code (in C++, sollte aber leicht übersetzbar sein):
Code: | SDL_Surface* Image = IMG_Load("datei.erweiterung");
if(0 == Image)
{
std::cout << "bild nicht geladen!!" << std::endl;
return false;
}
SDL_Surface* Converted = SDL_CreateRGBSurface
(
SDL_SWSURFACE,
Image->w,
Image->h,
24,
0x000000ff,
0x0000ff00,
0x00ff0000,
0xff000000
);
SDL_BlitSurface(Image, 0, Converted, 0);
glGenTextures(1, &GlId[i]);
glBindTexture(GL_TEXTURE_2D, GlId[i]);
glTexImage2D
(
GL_TEXTURE_2D,
0,
3,
Converted->w,
Converted->h,
0,
GL_RGB,
GL_UNSIGNED_BYTE,
Converted->pixels
);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
SDL_FreeSurface(Image);
SDL_FreeSurface(Converted); |
Braucht allerdings noch zusätzlich das Paket SDL_Image und SDL_Image-dev, welche meiner Meinung nach aber auf jedenfall auf den PC gehören, weil mit diesem Paket SDL in der Lage ist, so gut wie jedes Grafikformat zu benutzen. (Ich verwende das Paket übrigens für mein aktuelles Projekt _________________ Wahnsinn ist nur die Antwort einer gesunden Psyche auf eine kranke Gesellschaft. |
|
Nach oben |
|
|
darkinsanity aka sts
Anmeldungsdatum: 01.11.2006 Beiträge: 456
|
Verfasst am: 04.12.2008, 13:07 Titel: |
|
|
danke,
jep das hab ich gestern beim rumprobieren rausgefunden^^
FreeImage läuft wunderbar und lädt alles was ich brauch. Also: Problem gelöst _________________ Traue keinem Computer, den du nicht aus dem Fenster werfen kannst -- Steve Wozniak |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|