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

Aktuelle Zeit: Do Jul 17, 2025 16:50

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



Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Mo Jan 16, 2006 09:59 
Offline
DGL Member

Registriert: Mo Jan 16, 2006 09:14
Beiträge: 2
Hallo,

ich beschäftige mich seit kurzem mit opengl und habe die ersten tutorials abgearbeitet. Jetzt habe ich mir die Aufgabe gestellt einen drehenden würfel mit 6 texturen (jpgs 256x256) zu gestalten. Das klappt im prinzip, aber das im Tutorial erwähnte Überschreiben der Texturzuordnung mittels glBindTexture funktioniert bei mir nicht. Alle 6 Seiten des Würfels zeigen das gleiche Bild.

so bin ich vorgegangen (Beispiel für 2 Seiten):

1. In der Procedure SetupGL

Code:
  1.   LoadTexture('c:\michel256.jpg', v_tex1, False);
  2.   LoadTexture('c:\peter256.jpg', v_tex2, False);


2. In der Procedure Render

Code:
  1.   glBindTexture(GL_TEXTURE_2D,v_tex1);
  2.   glEnable (GL_TEXTURE_2D);
  3.  
  4.         glBegin(GL_QUADS);
  5.           glTexCoord2f(0, 0);glVertex3f(-0.5, 0.5, 0.5);
  6.           glTexCoord2f(0, 1);glVertex3f(-0.5,-0.5, 0.5);
  7.           glTexCoord2f(1, 1);glVertex3f( 0.5,-0.5, 0.5);                //Vorderansicht
  8.           glTexCoord2f(1, 0);glVertex3f( 0.5, 0.5, 0.5);
  9.  
  10.   glDeleteTextures(1,@v_tex1);
  11.   glBindTexture(GL_TEXTURE_2D,v_tex2);
  12.  
  13.  
  14.         glTexCoord2f(0, 0); glVertex3f( 0.5, 0.5,-0.5);
  15.         glTexCoord2f(0, 1); glVertex3f( 0.5,-0.5,-0.5);
  16.         glTexCoord2f(1, 1); glVertex3f(-0.5,-0.5,-0.5);                  //Rückansicht
  17.         glTexCoord2f(1, 0); glVertex3f(-0.5, 0.5,-0.5);
  18.  


3. Die Zeile: glDeleteTextures(1,@v_tex1); scheint wirkunglos, kann ich also auch auskommentieren

Über sachdienliche Hinweise würde ich mich freuen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Wer lesen kann ist klar im Vorteil
BeitragVerfasst: Mo Jan 16, 2006 10:31 
Offline
DGL Member

Registriert: Mo Jan 16, 2006 09:14
Beiträge: 2
Ok - machmal kommt die Erleuchtung ganz plötzlich (Beim Lesen). Die Befehle müssen außerhalb einer glbegin/glend-Konstruktion stehen. Hat sich also erledigt.

krueuw


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jan 16, 2006 10:47 
Offline
Fels i.d. Brandung
Benutzeravatar

Registriert: Sa Mai 04, 2002 19:48
Beiträge: 3830
Wohnort: Tespe (nahe Hamburg)
Richtig. Aber sei Dir versichert, ich habe auch schon über ein solches Problem gerätselt ;)

_________________
"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: Mo Jan 16, 2006 12:31 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Ich denke mal mit solchen Problemen wirst du noch öfters zu haben. So etwas (oder ähnliches) passiert eigentlich jedem immer mal wieder.

Aber noch etwas am Rande. glDeleteTextures löscht die angegebenen Texturen vollständig. Sprich. Du kannst sie nach dem Aufruf nicht mehr benutzen. Das solltest du also nur tun, wenn du die Textur nicht mehr benötigst. Zum Benutzen einer anderen Textur genügt es voll und ganz wenn du diese Bindest. Wenn du eine Textur nicht mehr benutzen (aber behalten) möchtest dann solltest du entweder das Texturtarget (z. B. GL_TEXTURE_2D) deaktivieren oder die Textue mit der ID 0 binden. Wobei sich das auch anbietet, wenn du die Textur löscht.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jan 16, 2006 14:35 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Wenn du deine Szene immer wieder zeichnest, ist es gift, die Texturen in jedem durchgang zu laden, anzuzeigen und dann wieder freizugeben. Besser ist es, wenn du deine Texturen am Anfang (oder mittels einer TexManager-Klasse bei bedarf) lädst, und sie dann nur noch bindest. Erst wenn du dein Programm beendest (oder wenn es anderweitig nötig wird) solltest du die texturen löschen.

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


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 13 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 | 16 Queries | GZIP : On ]