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

Aktuelle Zeit: Fr Jul 18, 2025 12:26

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



Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: probleme mit multitexturing
BeitragVerfasst: Fr Mai 23, 2008 14:13 
Offline
DGL Member

Registriert: Do Feb 21, 2008 10:49
Beiträge: 55
Wohnort: Dresden
Programmiersprache: FPC/Linux
moin allerseits,

ich wollte gestern mal eben multitexturing in mein projekt einbauen. ich hab da ne heightmap und wenn ich deren textur drüberlege, hab ich ja im prinzip nur einfarbige flächen, durch die extreme streckung. also wollte ich dort ne textur drüberlegen, damit das ganze nicht so eintönig aussieht, diese ist im prinzip nur eine grau-stufen-tga mit hellen und dunklen flecken. aber aus irgendeinem grund funktioniert das nicht, sprich die detailtextur ist zwar zu sehen, aber ebenfalls extrem gestreckt. es sieht so aus, als würde er meine texturkoordinaten ignorieren, denn ich kann da einstellen, was ich will. hier mein code:
Code:
  1.  
  2. //die normale textur kommt in unit 1
  3.  
  4.   glActiveTexture(GL_TEXTURE0);
  5.   glEnable(GL_TEXTURE_2D);
  6.   textures.Bind(tex);
  7.   glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
  8.  
  9. //hier die detailtextur
  10.  
  11.   glActiveTexture(GL_TEXTURE1);
  12.   glEnable(GL_TEXTURE_2D);
  13.   textures.Bind('terrain.tga');
  14.   glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
  15.  
  16.   for z:= 0 to (SIZE_OF_SECTOR-1) do begin
  17.     glbegin(GL_QUAD_STRIP);
  18.     glcolor3f(1.0,1.0,1.0);
  19.       for x:= 0 to (SIZE_OF_SECTOR) do begin
  20.         with vertices[(z+1)*(SIZE_OF_SECTOR+1)+x] do begin
  21. //          glnormal3f(nx, ny, nz);
  22. //          gltexcoord2f(u,v);
  23.           glMultiTexCoord2f(GL_TEXTURE0, u, v);
  24.           glMultiTexCoord2f(GL_TEXTURE1, x, z+1);
  25.           glvertex3f(x, y, z);
  26.         end;
  27.         with vertices[z*(SIZE_OF_SECTOR+1)+x] do begin
  28. //          glnormal3f(nx, ny, nz);
  29. //          gltexcoord2f(u,v);
  30.           glMultiTexCoord2f(GL_TEXTURE0, u, v);
  31.           glMultiTexCoord2f(GL_TEXTURE1, x, z);
  32.           glvertex3f(x, y, z);
  33.         end;
  34.       end;
  35.     glend;
  36.   end;
  37.  
  38. //zweite unit wieder abstellen
  39.  
  40.   glActiveTexture(GL_TEXTURE1);
  41.   glDisable(GL_TEXTURE_2D);
  42.   glActiveTexture(GL_TEXTURE0);
  43.   glEnable(GL_TEXTURE_2D);
  44.   glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
  45.  


das hab ich ja mehr oder weniger ausm tutorial übernommen und ich wüsste gerne, ob jemand ne idee hat, woran das liegen könnte. multitexturing geht, denn das beispiel zum tutorial funzt. und die texturen gehen einzeln auch.

schonmal danke im voraus

_________________
Gruß McWurscht - sorry für's Posting.

Wer mal meinen bisher erfolgreichsten Erguss in Sachen Web-Programmierung sehen will: RCV


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mai 23, 2008 14:26 
Offline
DGL Member

Registriert: Mi Mär 31, 2004 15:24
Beiträge: 114
Hi!

Hier meine Koordinaten für die Detailtextur für ein Rechteck.

Code:
  1.                 glBegin(GL_QUADS);
  2.                   glMultiTexCoord2f(GL_TEXTURE0,0,0); // Grundtextur
  3.                   glMultiTexCoord2f(GL_TEXTURE1,0,0); // Detailtextur
  4.                   glVertex3f(0,0,0);
  5.                   glMultiTexCoord2f(GL_TEXTURE0,1,0);
  6.                   glMultiTexCoord2f(GL_TEXTURE1,1/20,0);
  7.                   glVertex3f(32,0,0);
  8.                   glMultiTexCoord2f(GL_TEXTURE0,1,1);
  9.                   glMultiTexCoord2f(GL_TEXTURE1,1/20,1/20);
  10.                   glVertex3f(32,0,32);
  11.                   glMultiTexCoord2f(GL_TEXTURE0,0,1);
  12.                   glMultiTexCoord2f(GL_TEXTURE1,0,1/20);
  13.                   glVertex3f(0,0,32);
  14.                 glEnd();
  15.  


Vorher noch:
Code:
  1.               glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
  2.               glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);


, damit die textur fortgesetzt wird.


Die Detailtextur müsste nun 20x mehr in jeder Richtung vorhanden sein.
Der Code zum Binden sah richtig aus, sofern ich richtig geguckt hab.

Viele Grüße


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mai 23, 2008 17:52 
Offline
DGL Member

Registriert: Do Feb 21, 2008 10:49
Beiträge: 55
Wohnort: Dresden
Programmiersprache: FPC/Linux
ok, ich hab den fehler gefunden.

der hat zwar kein problem mit graustufen und 8bit texturen, aber beim multitexturing, will der die ni ham. sonst gehen die. hab die also in rgb konvertiert und es funzt. hat schonmal jemand etwas ähnliches beobachtet?

vielleicht sollte man mal ne sammlung von solchen äußerst seltsamen dingen machen, da kommt ja von alleine keine sau drauf...

_________________
Gruß McWurscht - sorry für's Posting.

Wer mal meinen bisher erfolgreichsten Erguss in Sachen Web-Programmierung sehen will: RCV


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 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.008s | 14 Queries | GZIP : On ]