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

Aktuelle Zeit: Fr Jul 18, 2025 08:03

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 13 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Textur laden TuT4
BeitragVerfasst: Fr Jun 19, 2009 19:53 
Offline
DGL Member

Registriert: So Feb 01, 2009 22:03
Beiträge: 7
Hi ich habe mal eine frage an euch:

ich habe das tutorial durchgespielt, wo man die Texturen in den cube lädt.
Ich habe aber nun das problem das der cube weiss bleibt.

ich lade die procedure LoadTexture über das formcreate.

und hier mal die procedure an sich :

Code:
  1. procedure TForm1.LoadTexture;
  2. var
  3.   tex : PSDL_Surface;
  4. begin
  5.   tex := IMG_Load('./test.jpg');
  6.   if assigned(tex) then
  7.   begin
  8.     glGenTextures(1, @TexID);
  9.     glBindTexture(GL_TEXTURE_2D, TexID);
  10.  
  11.     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
  12.     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
  13.  
  14.     // Achtung! Einige Bildformate erwarten statt GL_RGB, GL_BGR. Diese Konstante fehlt in den Standard-Headern
  15.     glTexImage2D(GL_TEXTURE_2D, 0, 3, tex^.w, tex^.h,0, GL_RGB, GL_UNSIGNED_BYTE, tex^.pixels);
  16.  
  17.     SDL_FreeSurface(tex);
  18.   end;
  19.  
  20. end;


das bild liegt bei mir einfach bei dem normalen formular.


eigentlich soweit alles wie im tut beschrieben . ich komme einfach nicht auf die Lösung und hoffe natürlich das ihr mir da helfen könnt .

lg


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 19, 2009 20:13 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Hm, das sieht soweit okay aus, vielleicht zeigst du mal den Code wo du den netten Würfel zeichnest?
Der Schuss ins Blaue ist glEnable(GL_TEXTURE_2D) fehlt...?

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 19, 2009 20:17 
Offline
DGL Member

Registriert: So Feb 01, 2009 22:03
Beiträge: 7
hmm okay dann hier nochmal die render procedure als auszug . Die texture habe ich geladen. nur beim debuggen ist mir aufgefallen das "tex" nach der zuweisung nil ist. danke schonmal für die antwort.

Code:
  1. begin
  2.   glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  3.  
  4.   glMatrixMode(GL_PROJECTION);
  5.   glLoadIdentity;
  6.   gluPerspective(50.0, (ClientWidth/ClientHeight), NearClipping, FarClipping);
  7.  
  8.   glMatrixMode(GL_MODELVIEW);
  9.   glLoadIdentity;
  10.  
  11.   glTranslatef(0, 0, -5);
  12.  
  13.   glEnable(GL_TEXTURE_2D);
  14.  
  15.   glBegin(GL_QUADS);
  16.     glTexCoord2f(0,0); glVertex3f(-1,1,0);  //lo
  17.     glTexCoord2f(0,1); glVertex3f(-1,-1,0); //lu
  18.     glTexCoord2f(1,1); glVertex3f(1,-1,0);  //ru
  19.     glTexCoord2f(1,0); glVertex3f(1,1,0);   //ro
  20.   glEnd;
  21.  
  22.   SwapBuffers(DC);
  23. end;


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 19, 2009 20:28 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Code:
  1. tex := IMG_Load('./test.jpg');

Nutzt du Windows als Betriebssystem? Hast du mal ein "\" statt dem "/" versucht? Nur ein Schuss ins blaue, kenne mich mit SDL nicht aus.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 19, 2009 20:30 
Offline
DGL Member

Registriert: So Feb 01, 2009 22:03
Beiträge: 7
also habd as probiert aber daran liegt es auch nicht :-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 19, 2009 20:31 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Also normalerweise kommt windows mit / anstatt \ klar. Nil bedeutet aber definitiv, dass da was nicht funktioniert hat. Probier mal anstatt './test.jpg' einfach:
ExtractFilePath(ParamStr(0))+'test.jpg'. Stell sicher, dass die test.jpg im gleichen Verzeichniss wie die ausführbare Datei liegt.

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 19, 2009 20:33 
Offline
DGL Member

Registriert: So Feb 01, 2009 22:03
Beiträge: 7
da kommt dann ne meldung : [DCC Fehler] Template.pas(171): E2010 Inkompatible Typen: 'PSDL_Surface' und 'string' !
mhh


edit :

war mein fehler . sieht jetzt wie folgt aus aber funzt trotzdem iwie nicht . Und komme beim debuggen da auch nicht weiter.


Code:
  1. procedure TForm1.LoadTexture;
  2. var
  3.   tex : PSDL_Surface;
  4. begin
  5.   tex := IMG_Load(PChar(ExtractFilePath(ParamStr(0))+'test.jpg'));
  6.  
  7.   if assigned(tex) then
  8.   begin
  9.     glGenTextures(1, @TexID);
  10.     glBindTexture(GL_TEXTURE_2D, TexID);
  11.  
  12.     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
  13.     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
  14.  
  15.     // Achtung! Einige Bildformate erwarten statt GL_RGB, GL_BGR. Diese Konstante fehlt in den Standard-Headern
  16.     glTexImage2D(GL_TEXTURE_2D, 0, 3, tex^.w, tex^.h,0, GL_RGB, GL_UNSIGNED_BYTE, tex^.pixels);
  17.  
  18.     SDL_FreeSurface(tex);
  19.   end;
  20.  
  21. end;


Zuletzt geändert von Stexxy am Fr Jun 19, 2009 20:37, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 19, 2009 20:36 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Ich tippe mal, du hast meine Aussage falsch interpretiert. Du solltest nur den String ersetzen, sodass die Zeile letzendlich so aussieht:
tex := IMG_Load(ExtractFilePath(ParamStr(0))+'test.jpg');

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 19, 2009 20:39 
Offline
DGL Member

Registriert: So Feb 01, 2009 22:03
Beiträge: 7
tex := IMG_Load(ExtractFilePath(ParamStr(0))+'test.jpg');


ok hab das dadurch ersetzt nun und jetzt kommt natürlich :

[DCC Fehler] Template.pas(171): E2010 Inkompatible Typen: 'string' und 'PWideChar'

wird dann denk ich mal nen D2009 prob sein ....


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 19, 2009 20:44 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Okay... Dann halt:
tex := IMG_Load(PWideChar(PChar(AnsiString(ExtractFilePath(ParamStr(0))+'test.jpg'))));

Ich bin mir gerade über die gepflogenheiten von Delphi 2009 nicht 100%ig sicher, daher habe ich hier jetzt sehr viele Casts eingebaut, um ganz ganz sicher zu sein. Ich hoffe, das kompiliert bei dir auch ;).

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 19, 2009 20:53 
Offline
DGL Member

Registriert: So Feb 01, 2009 22:03
Beiträge: 7
oje das is ma gut geraten XD. Es kompiliert und funktioniert auch.

Aber mal unter uns kannst du mir ggf noch die Casts erklären? Check irgendwie nicht wie das so funzt .
:lol:

lg und vielen dank
stexxy


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 19, 2009 21:05 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Ok. Also Delphi 2009 benutzt standardmäßig offensichtlich WideString (= Unicode). Die SDL-Libs aber verwenden AnsiString (= Ansi). Das muss man nun konvertieren, dafür ist der erste Cast AnsiString() da. Dann gehts darum, dass die IMG_Load-Bibliothek nen PChar haben will (also einen C-String), weshalb da der Cast auf PChar erfolgt. Delphi 2k9 will aber wiederum (fälschlicherweise) an dieser stelle einen PWideChar, weshalb hier nochmal ein böser Typecast durchgeführt wird. Wobei mir gerade auffällt, theoretisch müsste da anstatt PChar ein PAnsiChar hin, aber das scheint nicht allzu wichtig zu sein ;). Wäre aber der vollständigkeit halber besser. Jetzt klarer?

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 19, 2009 21:11 
Offline
DGL Member

Registriert: So Feb 01, 2009 22:03
Beiträge: 7
joah das nenn ich dochmal ne sehr gute erklährung.
Da bleibt keine frage offen. vielen dank und schönen abend weiterhin.


lg stexxy


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 13 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


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:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.010s | 15 Queries | GZIP : On ]