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

Aktuelle Zeit: Mi Jul 16, 2025 09:24

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



Ein neues Thema erstellen Auf das Thema antworten  [ 12 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: textureloader in c++
BeitragVerfasst: Sa Okt 14, 2006 21:44 
Offline
DGL Member
Benutzeravatar

Registriert: Do Nov 17, 2005 14:40
Beiträge: 63
Wohnort: Dötlingen
hallo community,
da ich nicht einen ganzen texture loader selbst schreiben wollte, hab ich mir einen aus dem internet geladen: http://members.iinet.net.au/~cleathley/ ... Loader.htm
aber wenn ich ihn benutze und dann mein projekt kompilieren will, erhalte ich folgende fehler:
Code:
  1.   [Linker error] undefined reference to `IID_IPicture'
  2.   [Linker error] undefined reference to `OleLoadPicturePath@24'
  3.   [Linker error] undefined reference to `CreateStreamOnHGlobal@12'
  4.   [Linker error] undefined reference to `IID_IPicture'
  5.   [Linker error] undefined reference to `OleLoadPicture@20'
  6.   ld returned 1 exit status
  7.   [Build Error]  [ACW.exe] Error 1


ich hoffe jemand kann mir helfen, auch wenn hier überwiegend "delpher" unterwegs sind.

als editor benutze ich devcpp und als compiler mingw.

initialisierung des textureloaders:
Code:
  1. TextureLoader *TexLoader = new TextureLoader();


laden der texturen
Code:
  1. bool mm_LoadTextures()
  2. {
  3.      TexLoader->LoadTextureFromDisk("soldiers.tga", &mmTextures[0]);
  4.      TexLoader->LoadTextureFromDisk("back.tga", &mmTextures[1]);
  5.      return true;
  6. }


zeichnen
Code:
  1. bool mm_Render()
  2. {
  3.      glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  4.      glMatrixMode(GL_MODELVIEW);
  5.      glLoadIdentity();
  6.      glTranslatef(0.0f, 0.0f, -30.0f);
  7.      glEnable(GL_TEXTURE_2D);
  8.      glBegin(GL_QUADS);
  9.              glBindTexture(GL_TEXTURE_2D, mmTextures[0].TextureID);
  10.              glTexCoord2f(0,0); glVertex3f(-10.0f, -10.0f, 5.0f);
  11.              glTexCoord2f(1,0); glVertex3f(  0.0f, -10.0f, 5.0f);
  12.              glTexCoord2f(1,1); glVertex3f(  0.0f,   0.0f, 5.0f);
  13.              glTexCoord2f(0,1); glVertex3f(-10.0f,   0.0f, 5.0f);
  14.  
  15.              glBindTexture(GL_TEXTURE_2D, mmTextures[1].TextureID);
  16.              glTexCoord2f(0,0); glVertex3f(  0.0f, -5.0f, 5.0f);
  17.              glTexCoord2f(1,0); glVertex3f( 10.0f, -5.0f, 5.0f);
  18.              glTexCoord2f(1,1); glVertex3f( 10.0f,  5.0f, 5.0f);
  19.              glTexCoord2f(0,1); glVertex3f(  0.0f,  5.0f, 5.0f);
  20.      glEnd();
  21.      return true;
  22.      SDL_GL_SwapBuffers();
  23. }


falls ihr irgendeinen anderen texture loader empfehlen könnt, immer gerne her damit ;)

schonmal danke allein fürs anschauen :)

joshua


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Okt 15, 2006 21:34 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Werden ole32.lib und oleaut32.lib mit eingebunden ?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 16, 2006 10:46 
Offline
DGL Member
Benutzeravatar

Registriert: Do Nov 17, 2005 14:40
Beiträge: 63
Wohnort: Dötlingen
ahh, danke. das problem hat sich damit zumindest schonmal reduziert :wink:

aber ein bisschen was bleibt noch immer:
Code:
  1.  
  2.   [Linker error] undefined reference to `IID_IPicture'
  3.   [Linker error] undefined reference to `IID_IPicture'
  4.   ld returned 1 exit status
  5.   [Build Error]  [ACW.exe] Error 1


weißt du (oder auch jemand anders :) ) welche lib ich noch einbinden muss?

joshua


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 16, 2006 11:38 
Offline
DGL Member

Registriert: Fr Okt 06, 2006 13:55
Beiträge: 12
das klingt ganz nach IPicture und wenn ich mich nicht irre, kann das nur der Visual Studio Compiler.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 16, 2006 12:17 
Offline
DGL Member
Benutzeravatar

Registriert: Do Nov 17, 2005 14:40
Beiträge: 63
Wohnort: Dötlingen
ok, danke, sieht so aus, als hättest du recht. bei genauem suchen auf der seite des textureloaders findet man auch folgende zeile: "Load from Disk, Internet Stream, Ram (useful if you store images in other file formats (ie. IStorage/IStream containers) and from Resources (VC6)."

weiß denn vielleicht jemand noch einen texureloader, der auch mit devcpp funktionieren würde???

joshua


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 16, 2006 13:02 
Offline
DGL Member

Registriert: Fr Okt 06, 2006 13:55
Beiträge: 12
ich hab, weil ich betriebsystemunabhängig bleiben möchte, auf alles ausser RAW und TGA verzichtet und diese beiden Loader selbstimplementiert, bzw bei Nehe geguckt, wie er das macht.
ich hatte einige imagelibs ausprobiert und fand die viel zu groß und so dafür, daß ich nachher eh selbst bestimmen kann, welche form meine daten haben und somit ja nun jede textur auch nach TGA konvertieren kann.

Lesson 33: Loading Compressed And Uncompressed TGA's


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 16, 2006 18:41 
Offline
DGL Member
Benutzeravatar

Registriert: Do Nov 17, 2005 14:40
Beiträge: 63
Wohnort: Dötlingen
okay, ich hab mir jetzt noch ein bisschen was zusammengeschrieben (und zusammenkopiert :wink: )mit dem NeHe-Tut, aber irgendwie wird immer nur die Textur verwendet, die zuletzt geladen wurde, obwohl ich verschiedene Texturen binde. Weiß vielleicht jemand, wo der Fehler liegt?

texturenarray:
Code:
  1. Texture mmTextures[2];


laden der texturen:
Code:
  1. bool mmLoadTextures()
  2. {
  3.      if (!LoadTGA(&mmTextures[0],"Data/Textures/uncompressed.tga"))
  4.      {
  5.         return false;
  6.      }
  7.      
  8.      if (!LoadTGA(&mmTextures[1],"Data/Textures/hsoldier.tga"))
  9.      {
  10.         return false;
  11.      }
  12.      for (int i = 0; i < mmNumTextures; i++)
  13.      {
  14.          glGenTextures(1, &mmTextures[i].texID);
  15.          glBindTexture(GL_TEXTURE_2D, mmTextures[i].texID);
  16.           glTexImage2D(GL_TEXTURE_2D, 0, 3, mmTextures[i].width, mmTextures[i].height, 0, GL_RGB, GL_UNSIGNED_BYTE, mmTextures[i].imageData);
  17.           glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
  18.           glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
  19.      }
  20.      return true;
  21. }


zeichnen:
bool mmRender()
Code:
  1. {
  2.      glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  3.      glMatrixMode(GL_MODELVIEW);
  4.      glLoadIdentity();
  5.      glTranslatef(0.0f, 0.0f, -30.0f);
  6.      glEnable(GL_TEXTURE_2D);
  7.      glBegin(GL_QUADS);
  8.              glBindTexture(GL_TEXTURE_2D, mmTextures[0].texID);
  9.              glTexCoord2f(0,0); glVertex3f(-12.0f, -5.0f, 5.0f);
  10.              glTexCoord2f(1,0); glVertex3f( -2.0f, -5.0f, 5.0f);
  11.              glTexCoord2f(1,1); glVertex3f( -2.0f,  5.0f, 5.0f);
  12.              glTexCoord2f(0,1); glVertex3f(-12.0f,  5.0f, 5.0f);
  13.  
  14.              glBindTexture(GL_TEXTURE_2D, mmTextures[1].texID);
  15.              glTexCoord2f(0,0); glVertex3f(  2.0f, -5.0f, 5.0f);
  16.              glTexCoord2f(1,0); glVertex3f( 12.0f, -5.0f, 5.0f);
  17.              glTexCoord2f(1,1); glVertex3f( 12.0f,  5.0f, 5.0f);
  18.              glTexCoord2f(0,1); glVertex3f(  2.0f,  5.0f, 5.0f);
  19.      glEnd();
  20.      SDL_GL_SwapBuffers();
  21.      return true;
  22. }


und das laden von tga's mit alphakanal ist mit NeHes sourcecode auch nicht möglich, oder?

joshua


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 16, 2006 20:05 
Offline
DGL Member

Registriert: So Feb 19, 2006 23:46
Beiträge: 55
Du darfst innerhalb eines glBegin-End-Blockes keine Texturen binden, das muss ausserhalb passieren.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 16, 2006 20:15 
Offline
DGL Member
Benutzeravatar

Registriert: Do Nov 17, 2005 14:40
Beiträge: 63
Wohnort: Dötlingen
*mit flacher hand gegen stirn schlag*
ja danke, selten dämlich von mir...

joshua


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 16, 2006 20:45 
Offline
DGL Member
Benutzeravatar

Registriert: Do Nov 17, 2005 14:40
Beiträge: 63
Wohnort: Dötlingen
wie sieht es jetzt dann aber mit einem alphakanal aus? der sourcecode von NeHe lädt den ja nicht mit.
weiß jemand eine möglichkeit für das laden von unkomprimierten tgas mit alphakanal?

joshua


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 16, 2006 21:35 
Offline
DGL Member

Registriert: So Feb 19, 2006 23:46
Beiträge: 55
Doch das tut er sehr wohl. In der Textur-struct kannst du das dann einmal an dem member bpp oder direkt an type feststellen. Um die Textur mit Alphakanal an OpenGL zu übergeben benutzt du am besten den folgenden Befehl:
Code:
  1. glTexImage2D(GL_TEXTURE_2D, 0, mmTextures[i].type, mmTextures[i].width, mmTextures[i].height, 0, mmTextures[i].type, GL_UNSIGNED_BYTE, mmTextures[i].imageData)


Zuletzt geändert von yonibear am Mo Okt 16, 2006 22:40, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 16, 2006 22:24 
Offline
DGL Member
Benutzeravatar

Registriert: Do Nov 17, 2005 14:40
Beiträge: 63
Wohnort: Dötlingen
ahh, jetzt funktioniert soweit alles.
vielen dank... :)

joshua


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 10 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.011s | 17 Queries | GZIP : On ]