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

Aktuelle Zeit: Do Jul 03, 2025 22:25

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



Ein neues Thema erstellen Auf das Thema antworten  [ 15 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 05, 2003 16:20 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Ich geh mal davon aus, das in tex deine Texturen-ID steht.Wenn dem so ist, dann musst du diese Textur die du erstellen willst auch vor dem Kopieren der Bilddaten binden.Das sieht codemässig dann so aus :

Code:
  1. glBindTexture(GL_TEXTURE_2D, tex[i]);
  2. glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
  3. glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
  4. glTexImage2D(GL_TEXTURE_2D, 0, 3, texture1[i]^.sizeX, texture1[i]^.sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, texture1[i]^.data);


Dann sollte das ganze eigentlich funzen.Allerdings lege ich dir ne andere Texturenladerbibliothek ans Herz (z.B. Jan Horns Textures.pas) den glaux ist veraltet und wird nicht mehr weiterentwickelt.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 05, 2003 16:32 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Ich nutze ne modifzierte Version von Jan Horn's Textures.pas : <a href='http://www.sulaco.co.za/opengl5.htm' target='_blank'>http://www.sulaco.co.za/opengl5.htm</a>
Mit der lassen sich bequem BMPs, JPGs und TGAs ohne zusätzliche DLLs laden.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 05, 2003 17:11 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Okt 26, 2002 17:14
Beiträge: 188
Wohnort: Hannover/Lüneburg
Was funktioniert denn genau nicht? Und welchen Code benutzt du an der Stelle, die nicht funktioniert?

_________________
Thunderman
Bei schwierigen Problemen entscheiden wir uns einfach für die richtige Lösung. Klar?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 05, 2003 17:46 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Okt 26, 2002 17:14
Beiträge: 188
Wohnort: Hannover/Lüneburg
Du meinst, dass beide Texturen übereinander auf deinem Polygon angezeigt werden?
Dafür musst du entweder Blending oder Multitexturing verwenden.
Multitexturing funktioniert per Extension. Schau dir dazu mal das Tut lesson 7 hier auf der Page an, oder such im Forum zu diesen beiden Themen. Bei Multitexturing ist glActiveTextureARB(GL_TEXTURE0_ARB); ein wichtiger Befehl, beim Blending glEnable(GL_BLEND);

_________________
Thunderman
Bei schwierigen Problemen entscheiden wir uns einfach für die richtige Lösung. Klar?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 05, 2003 17:58 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jun 03, 2003 18:38
Beiträge: 33
Hi, also ich möchte ganz ordinär einen array mit mehrern texturen haben. Wahlweise auch unterschiedliche variablen. Von diesen elementen bzw variablen möchte ich jede einzeln auf verschiedene Polygone legen. Hab ein haus gebaut und will das dach mit einer anderen textur belegen als die wand... hab nun schon alle kombis die mir einfielen umgestzt und es will einfach nicht gelingen.. wär rictig nett wenn einer von euch eine Antort hätte.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 05, 2003 18:08 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Okt 26, 2002 17:14
Beiträge: 188
Wohnort: Hannover/Lüneburg
Achso...

Da musst du nur vor dem Rendern jedes Polygons, dass eine andere Textur haben soll, die entsprechende Textur mit glBindTexture(GL_TEXTURE_2D, tex[0]); aktivieren. Sonst weiß OpenGL ja nicht, welche Textur er nun verwenden soll, da er immer die zuletzt aktive nimmt. Also etwa:
Code:
  1. ...
  2. glBindTexture(GL_TEXTURE_2D, tex[0]);
  3. glBegin(GL_TRIANGLES);
  4.  &nbsp;glVertex3f(...);
  5.  &nbsp;glVertex3f(...);
  6.  &nbsp;...
  7. glEnd;
  8. glBindTexture(GL_TEXTURE_2D, tex[1]);
  9. glBegin(GL_TRIANGLES);
  10.  &nbsp;glVertex3f(...);
  11.  &nbsp;glVertex3f(...);
  12.  &nbsp;...
  13. glEnd;
  14. ...
  15.  

_________________
Thunderman
Bei schwierigen Problemen entscheiden wir uns einfach für die richtige Lösung. Klar?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 05, 2003 18:17 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Prüf mal ob deine Texturen alle korrekt geladen wurden.Dies lässt sich recht einfach machen, indem du dir deine TexturenIDs (tex) anzeigen lässt.Dort sollten die Werte von 1 an steigend sein.Ist einer davon = 0, wurde diese Textur nicht korrekt geladen (falscher Dateiname, falsche Maße oder falsches Format).

Wenn das alles geklappt hat, dann solltest du wie Thunderman gesagt hat vor jedem Polygon die entsprechende Textur binden.Allerdings musst du darauf achten, das du glBindTexturen nicht in einem glBegin...glEnd Block, sondern nur ausserhalb verwenden kannst...folgendes funktioniert deshalb z.B: nicht :
<!--pas--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Delphi-Source </td></tr><tr><td id='CODE'><!--pas1--><pre>glBegin(GL_QUADS);
glBindTexture();
glVertex3f
[...]
glBindTexture();
glVertex3f
glEnd</pre><!--pas2--></td></tr></table><span class='postcolor'><!--pas3-->
Korrekt muss das so aussehen :
<!--pas--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Delphi-Source </td></tr><tr><td id='CODE'><!--pas1--><pre>glBindTexture();
glBegin(GL_QUADS);
glVertex3f...
glEnd;
[...]
glBindTexture();
glBegin(GL_QUADS);
glVertex3f...
glEnd;
</pre><!--pas2--></td></tr></table><span class='postcolor'><!--pas3-->

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 05, 2003 18:57 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Ich versteh zwar nicht so hunterprozentig was du meinst, aber ich geh mal davon aus das du eine Textur über ein Quad mehrmals wiederholen willst, oder?

Wenn dem so ist, dann geht das ganz einfach über die Texturkoordinate.Du zeichnest dann für deine Wand nur ein Quad und setzt bei glTexCoord2f() statt z.B. (0,1) einfach (0,8) ein und deine Textur wird 8 mal in T-Richtung wiederholt...klappt mit der S-Koordinate übrigens genau so!

Wenn du jedoch für mehrer Quads die selbe Textur nutzen willst und diese dann über diese Quads hinwegstrecken willst, musste die Texturkoordinaten für deine Quads anpassen.
Nehmen wir mal an du willst deine Wand aus 2x2 Quads bauen und die Textur die du am Anfang gebunden hast quasi über diese 2x2 Quads so anzeigen, das es aussieht als wäre das eins...dann geht dein Quad das oben/links liegt (von vorne gesehen) texturkoordinatentechnisch von 0/0 bis 0.5/0.5, und das Quad daneben dann von 0.5/0 bis 1/0.

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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


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 ]