Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 11:55

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 20 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: Texturenladen mit SDL_Image
BeitragVerfasst: Sa Jul 23, 2005 12:57 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
Hi, versuche gerade mit SDL_Image unter Linux Texturen zu laden.
Zum Laden benutze ich die aus der Wiki angegebene Routine:
Code:
  1. uses sdl, sdl_image, dglOpengl;
  2.  
  3. function LoadTexture(Ort: String; var texture: TGLUint; b: Boolean): Boolean;
  4. var
  5.   tex_surface : PSDL_Surface;
  6. begin
  7.   Result:=false;
  8.   tex_surface := IMG_Load(PChar(Ort));
  9.   if assigned(tex_surface) then
  10.   begin
  11.     glGenTextures(1, @texture);
  12.     glBindTexture(GL_TEXTURE_2D, texture);
  13.     glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, tex_surface^.w, tex_surface^.h,0, GL_RGB, GL_UNSIGNED_BYTE, tex_surface^.pixels);
  14.     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
  15.     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
  16.     SDL_FreeSurface(tex_surface);
  17.     Result:=true;
  18.   end
  19.   else
  20.     Log.LogError(Ort+' nicht geladen','(Texturlader)');
  21. end;


Leider lädt er keine einzige Textur, unabhängig vom verwendeten Format.
Jetzt ist die Frage wo mein Fehler ist bzw. was es für alternative und Linux funktionierende Texturloader gibt.
Achso: das b und so ist drin, weil ich einfach schnell einen Texturloaderersatz für den von Jan Horn brauchte und ich meinen Code noch nicht richtig umarbeiten wollte.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jul 23, 2005 13:43 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jun 19, 2003 10:44
Beiträge: 991
Wohnort: Karlsfeld (nahe München)
Also kommt bei dir deine Fehlermeldung?

Ansonten darfst du halt nur das nicht vergessen bevor du Zeichnest:
Code:
  1.  
  2.   glEnable(GL_TEXTURE_2D);
  3.   glBindTexture(GL_TEXTURE_2D,texture);
  4.  


Bist du sicher das bei dir die SDL (Entwickler?) Bibliotheken installiert sind?

MfG
flo

_________________
Danke an alle, die mir (und anderen) geholfen haben.
So weit... ...so gut


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jul 23, 2005 13:48 
Offline
DGL Member

Registriert: Do Apr 29, 2004 11:53
Beiträge: 29
der code von dir dürfte normal richtig sein

schau mal ob der pfad richtig ist

/pfad/datei.bmp
pfad/datei.bmp
pfad\datei.bmp

so mal rumprobieren, hatte in c++ damit auch öfters probleme

ansonsten versuch bei glTexImage2D GL_RGBA
falls wenn es dann laden geht textur fehler anzeigt

_________________
wtf?!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jul 23, 2005 14:50 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
Also das Problem ist einfach, dass er es mir ins Log schreibt, dass das Laden (d.h. die surface ist nil) fehlgeschlagen ist.
Das mit dem Pfad habe ich als erstes probiert in dem ich einfach 'gui.tga' anstatt PChar(Ort) angegeben habe.
Funktioniert leider nicht.
Devel-Pakete sind installiert.
Mit anderen Texturladern hat es unter Windows auch funktioniert. Nur funktionieren diese nicht unter Linux.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jul 23, 2005 15:59 
Offline
Fels i.d. Brandung
Benutzeravatar

Registriert: Sa Mai 04, 2002 19:48
Beiträge: 3830
Wohnort: Tespe (nahe Hamburg)
Also SDL ist eigentlich eine sehr gute Wahl unter Linux. Die Frage was schief läuft. Spontan sehe ich nichts. Gibt es eine Exception oder bleiben die Texturen nur weiß?

_________________
"Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jul 23, 2005 16:18 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
Die Texturen werden nicht geladen.
Das Problem ist aber jetzt gefunden:
Ich benutze TGAs.
Die mag er irgendwie nicht. Habe jetzt eine Datei mit BMP ersetzt und die wird geladen.
Ist zwar doof und muss verbessert werden, aber der Fehler ist nicht mehr der Lader.
Vor allem da ich das Schema nicht finde weshalb er manche Dateien lädt, andere aber nicht.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jul 23, 2005 18:34 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
Du verwendest nicht zufällig TGAs, die mit Photoshop erstellt wurden? Denn Photoshop exportiert TGAs teilweise sehr merkwürdig. In diesem Fall die Bilder dann in Gimp einfach laden und nochmal abspeichern. AFAIK exportiert Gimp TGAs richtig.

_________________
"Für kein Tier wird so viel gearbeitet wie für die Katz'."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jul 23, 2005 19:35 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
Nein, die Dateien wurden mit PaintShopPro gespeichert.
Habe es denoch probiert und es funktioniert nicht.

Edit: Problem gelöst
Ich als Windowsmensch habe mein Programm über Konqueror gestartet. Wenn ich es über die Konsole starte funktioniert es. :oops:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jul 25, 2005 00:22 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Was dem Programm aber eigentlich egal sein dürfte...außer es brauch Parameter.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jul 25, 2005 13:33 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Klingt danach, als ob das Programm relative Pfade zum aktuellen Verzeichnis enthält - wenn du es über die Konsole startest, befindest du dich wahrscheinlich im Programmverzeichnis, beim Konqueror ist wahrscheinlich irgend ein anderes Verzeichnis aktiv.
Lösung: erst den Startpfad der Anwendung herausfinden und relative Pfade im Programm über diesen zu absoluten Pfaden zusammenstückeln. Man sollte sich nicht unbedingt darauf verlassen, dass das Startverzeichnis einer Anwendung automatisch auch der aktive Pfad ist, wenn das Programm gestartet wurde (das führt manchmal zu schwer nachvollziehbaren Fehlern, weil es in den meisten Fällen ja funktioniert).

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jul 26, 2005 13:00 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
@Mars:
ja, das war der Grund weshalb es nur über die Konsole funktioniert hat danke.

@all:
Habe jetzt herausgefunden was SDL_Image an meinen Texturen nicht mag:
:arrow: ein paar Texturen hatten nicht die für OpenGL <2 notwendigen Masse :oops:
:arrow: meine tgas und pngs hatten alle Alphakanäle. Offiziell werden sie zwar unterstützt, bei mir aktuell werden sie aber nichtgeladen.

Ein weitere Punkte ist mir noch aufgefallen:
Er liesst tgas falsch ein.
Angehängt ist ein SDL-Beispiel, dass einfach drei texturierte Vierecke anzeigt.
Auf jedem Viereck ist dasselbe Bild, nur mit Gimp unter anderem Dateinamen (jpg, png, tga) gespeichert.
Bei der tga ist Rot und Blau vertauscht.


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jul 26, 2005 19:30 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jun 19, 2003 10:44
Beiträge: 991
Wohnort: Karlsfeld (nahe München)
wegen der vertauschen Farben:
Code:
  1.  
  2.     glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, tex_surface^.w, tex_surface^.h,0, GL_BGR, GL_UNSIGNED_BYTE, tex_surface^.pixels);
  3.  

(GL_BGR statt GL_RGB - steht glaub ich sogar im Wiki)

_________________
Danke an alle, die mir (und anderen) geholfen haben.
So weit... ...so gut


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jul 27, 2005 10:13 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
Steht leider nicht in der Wiki, jedenfalls nicht hier.
Ich vermute aktuell mal, dass alle meine Probleme jetzt weniger mit SDL_Image zu tun haben, sondern mehr damit wie ich die Surface in eine Texture verwandele.
Sollte mir dazu mal ein paar Texturelader anschauen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jul 27, 2005 10:19 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Wenn Sachen nicht im Wiki stehen dann BIIIIIIIITTTTTTTTEEEEEEE tragt sie nach. :roll:

Ne Ausage wie "Im Wiki steht ja noch nichtmal xyz!" darf es nicht geben. Wenn was nicht drinnen steht, schreibts rein! :?

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jul 27, 2005 11:05 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
Flash hat geschrieben:
Wenn Sachen nicht im Wiki stehen dann BIIIIIIIITTTTTTTTEEEEEEE tragt sie nach. :roll:

Ne Ausage wie "Im Wiki steht ja noch nichtmal xyz!" darf es nicht geben. Wenn was nicht drinnen steht, schreibts rein! :?

Werde ich schon machen :)
Nur will ich vorher eine funktionierende Variante haben bevor ich da noch weitere Fehler einbaue...


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 20 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.009s | 15 Queries | GZIP : On ]