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

Aktuelle Zeit: So Sep 07, 2025 21:25

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



Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: So Mai 04, 2003 18:48 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Feb 24, 2003 14:58
Beiträge: 21
Wohnort: Rödinghausen
Hallo zusammen,
wieder einmal komme ich nicht so recht weiter. Nun versuche ich schon seit etlichen Stunden (leider erfolglos) mein Problem zu lösen. :( I need help :unsure:

Also, kurz zur Info: Ich verwende Delphi7, "texture.pas" und "opengl12".
Bei mir funktioniert die Sache mit der Texture auch ganz prima :) - solange ich nicht versuche mehrere Texturen in den Speicher zu laden. Vorgestellt hatte ich mir das ganze eigentlich ganz einfach. Ich definiere mir ein dynamisches Array, packe dort meine Texturen bzw. deren ID hinein und hole sie mir bei Bedarf wieder heraus. Leider wird bei mir immer nur die Texture angezeigt, die als erstes im Array definiert wurde. Sobald ich ne andere TextureID aufrufe wird diese leider nicht angezeigt. :angry:
Ich habe hier mal ne Codeschnippsel mitgegeben. Vielleicht kann mir ja jemand auf die Sprünge helfen.

Code:
  1. // Array anlegen
  2. type TOGLTexture = record  
  3.    Texture : TgluInt;
  4. end;
  5. var OGLTexture: array of TOGLTexture;
  6.  
  7.  
  8.  
  9. //Texturen laden - Informationen zum Speicherort aus DB
  10. Procedure LoadTexture
  11. var i : integer;
  12. begin
  13.    with DatenModul do
  14.    begin
  15.       TextureTable.First;
  16.       while not TextureTable.Eof do
  17.       begin
  18.          inc(i);
  19.          SetLength(OGLTexture,i); //Arraydimension anpassen
  20.          LoadTEXTURE(TexturePath + TextureTableTextureName.value,OGLTexture[i].Texture,false);
  21.          glBindTexture(GL_TEXTURE_2D,OGLTexture[i].Texture);
  22.          TextureTable.Next;
  23.       end;
  24.    end;
  25. end
  26.  
  27.  
  28. // Textur den Darstellungsobjekten hinzufügen
  29. Procedure SetTexture
  30. begin
  31.    glBindTexture(GL_TEXTURE_2D,gewuenschteTextureID);
  32.    // Darstellung
  33.    .
  34.    .
  35. end;


Gruß
Martin

_________________
Alles was man kann ist ganz leicht


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Mai 04, 2003 19:01 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Du machst beim Laden der Texturen nen gravierenden Fehler :
Code:
  1. inc(i);
  2. SetLength(OGLTexture,i);
  3. LoadTEXTURE(TexturePath + TextureTableTextureName.value,OGLTexture[i].Texture,false);
  4. glBindTexture(GL_TEXTURE_2D,OGLTexture[i].Texture);

Wenn dieser Teil zum ersten mal aufgerufen wird, setzt du i=1, und setzt auch die Länge deines Texturenarrays auf 1(=i).Das ist soweit richtig, allerdings willst du dann deine Textur in OGLTexture[i] = OGLTexture[1] laden , was nicht funktionieren kann, da dein dynamisches Array bei 0 anfängt, und dein erstes Element den Index 0 hat.Eigentlich müsste dein Programm bei aktiver Bereichsprüfung irgendwo mit ner Fehlermeldung rausspringen.

Richtig müsste der obige Teil also so aussehen :
Code:
  1. inc(i);
  2. SetLength(OGLTexture,i);
  3. LoadTEXTURE(TexturePath + TextureTableTextureName.value,OGLTexture[i-1].Texture,false);
  4. glBindTexture(GL_TEXTURE_2D,OGLTexture[i-1].Texture);

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Mai 04, 2003 19:12 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Feb 24, 2003 14:58
Beiträge: 21
Wohnort: Rödinghausen
Zitat:
Du machst beim Laden der Texturen nen gravierenden Fehler :


Ups, stimmt. Ist im Original aber korrekt. Leider funktioniert es dennoch nicht

Martin

_________________
Alles was man kann ist ganz leicht


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Mai 04, 2003 19:40 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Dann sollte dein Quellcode eigentlich keine Probleme machen.Lass dir allerdings nach jeder geladenen Textur mal deren Dateinamen und TexturID ausgeben, dann kannst du leichter prüfen ob das Laden der Textur erfolgreich war, und ob auch die richtige Textur geladen wurde.

Ausserdem solltest du das Ergebnis von LoadTexture auswerten, denn diese Funktion gibt dir als Boolean zurück, ob die Textur erfolgreich geladen wurde oder nicht.Vielleicht liegen die Texturen (abgesehen von der ersten) in einem falschen Format vor, und können von Jan Horn's Lib nicht verarbeitet werden.

Wenn das alles nichts hilft, dann leg ich dir mal die Debugging-Features der Delphi-IDE ans Herz, die dir bei der Problemsuche behilflich sein sollten.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


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


Wer ist online?

Mitglieder in diesem Forum: Bing [Bot] und 17 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.007s | 15 Queries | GZIP : On ]