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

Aktuelle Zeit: Di Jul 15, 2025 23:22

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



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Texturen, Tapen und andere Tücken
BeitragVerfasst: Fr Jul 02, 2004 11:03 
Offline
DGL Member

Registriert: Do Apr 22, 2004 10:04
Beiträge: 16
Wohnort: Berlin
Hi ich hab folgendes Problem:

Ich lade mir zwei einzelne Texturen mithilfe der Routinen vom Bomberman-Editor Tut.
Danach Binde ich die Texturen beim Rendern an die Quads.
Jedoch wird nur die Textur genutzt die zuletzt geladen wurde, in dem Fall eben "GRAS", also für beide Flächen
dieselbe Textur, obwohl ich beider anderen Bodenplatte "BGRND" angebe.

Code:
  1.  
  2.  
  3. PROCEDURE LoadMyTextures;
  4. BEGIN
  5.   TextureManager.AddTexture('textures\Main.bmp','BGRND');
  6.   TextureManager.AddTexture('textures\Gras1.tga','GRAS');
  7. END;
  8.  
  9. PROCEDURE GrundplatteUnten;
  10. BEGIN
  11.   glBegin(GL_QUADS);
  12.     TextureManager.BindTexture('GRAS');
  13.     glTexCoord2f(0,0);glVertex3f(-10,-10, 0);
  14.     glTexCoord2f(0,1);glVertex3f(-10, 10, 0);
  15.     glTexCoord2f(1,1);glVertex3f( 10, 10, 0);
  16.     glTexCoord2f(1,0);glVertex3f( 10,-10, 0);
  17.   glEnd();
  18. END;
  19.  
  20. PROCEDURE GrundPlatteOben();
  21. BEGIN
  22.   glBegin(GL_QUADS);
  23.     TextureManager.BindTexture('BGRND');
  24.     glTexCoord2f(0,0);glVertex3f(-10,-10, 0);
  25.     glTexCoord2f(1,0);glVertex3f( 10,-10, 0);
  26.     glTexCoord2f(1,1);glVertex3f( 10, 10, 0);
  27.     glTexCoord2f(0,1);glVertex3f(-10, 10, 0);
  28.   glEnd();
  29. END;
  30.  


LoadMyTextures wird nach dem Initialisieren von opengl ausgeführt (am Ende des oncreate ereignisses)
und die Platten werden im Applicationeventsidle-event aufgerufen(wie in Templates)

ich hatte anfangs das Problem, dass ich beim glGenTex aufruf in der glBmp.pas einenfehler hatte,
hab dann einfach überall statt opengl12 dglopengl hingeschrieben und es funzte

danke schonmal
Michbeck


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jul 02, 2004 11:08 
Offline
DGL Member

Registriert: Do Nov 20, 2003 19:52
Beiträge: 48
Wohnort: Tillingen bei Chemnitz
Wenn ich mich nich ganz irre, müssen die 'Bind'-Befehle außerhalb von glBegin / glEnd stehen.
Solche Fehler findet man eigentlich relativ leicht mit Hilfe der glError - Funktion.

_________________
...die Idee ist gut, doch die Welt noch nicht bereit...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jul 02, 2004 11:10 
Offline
DGL Member

Registriert: Do Apr 22, 2004 10:04
Beiträge: 16
Wohnort: Berlin
es funzt ja soweit nur es wird immer dieselbe textur genuzt, welche zulezt geladen wurde


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jul 02, 2004 11:14 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Code:
  1. glBegin(GL_QUADS);
  2.     TextureManager.BindTexture('BGRND');...


Ist ja auch falsch. Du musst wie DopeFish gesagt hat die Textur VOR dem glBegin binden. Die Tatsache das die zuletzt geladene Textur gerendert wird liegt daran, das eine Textur vor dem Laden auch gebunden wird und OpenGL ja eine Statemachine ist.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jul 02, 2004 11:20 
Offline
DGL Member

Registriert: Do Apr 22, 2004 10:04
Beiträge: 16
Wohnort: Berlin
gut danke,

hab da aber noch ne frage...

wieso hab ich mit delphi6 probleme beim ausführen, wenn ich im Projekt die dglopengl.pas nutzte und beim Texturemanager und glbmp.pas die opengl12.pas?

da wurde beim glGenTex ein falsches format übergeben, wenn ich die fehlermeldung richtig interpretiert habe.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jul 02, 2004 11:29 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Du MUSST in allen Units die dein Projekt verwendet den gleichen OpenGL-Header verwenden. Ansonsten kanns ja nicht klappen, da du im Normalfall nämlich nur die Funktionspointer eines Headers laden tust.

_________________
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  [ 6 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 14 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 ]