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

Aktuelle Zeit: Fr Aug 01, 2025 20:59

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



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Multitexturing deaktivieren?!
BeitragVerfasst: Sa Sep 18, 2004 13:48 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Jun 09, 2003 16:47
Beiträge: 35
Wohnort: Bielefeld
Hi@ll,
Hab n kleines Problem mit Multitexturing. Wenn ich die Prozedur mit Multitexturing aktiviere, dann werden meine ganzen anderen (untexturierten) Objekte in einer anderen farbe dargestellt (ca dieselbe farbe, wie die textur hat). Wenn ich die prozedur einmal aktiviert habe und dann per laufzeit wieder deaktiviere, dann wird die Farbe nicht verändert, sie bleibt also so, wie nach dem aufruf von der Prozedur mit Multitexturing.

Hier der Code:
Code:
  1.  
  2.             procedure TestTextures2();
  3.             begin
  4.                  glActiveTexture(GL_TEXTURE1);
  5.                  glEnable(GL_TEXTURE_2D);
  6.                  glBindTexture(GL_TEXTURE_2D, tex[0]);
  7.                  glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
  8.  
  9.                  glActiveTexture(GL_TEXTURE0);
  10.                  glEnable(GL_TEXTURE_2D);
  11.                  glBindTexture(GL_TEXTURE_2D, tex[2]);
  12.                  glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
  13.  
  14.                     glBegin(GL_QUADS);
  15.                      glMultiTexCoord2f(GL_TEXTURE0, 0, 0);
  16.                      glMultiTexCoord2f(GL_TEXTURE1, 0, 0);
  17.                       glVertex3f(0, 0, 0);
  18.                      glMultiTexCoord2f(GL_TEXTURE0, 0, 1);
  19.                      glMultiTexCoord2f(GL_TEXTURE1, 0, 1);
  20.                       glVertex3f(1, 0, 0);
  21.                      glMultiTexCoord2f(GL_TEXTURE0, 1, 1);
  22.                      glMultiTexCoord2f(GL_TEXTURE1, 1, 1);
  23.                       glVertex3f(1, 1, 0);
  24.                      glMultiTexCoord2f(GL_TEXTURE0, 1, 0);
  25.                      glMultiTexCoord2f(GL_TEXTURE1, 1, 0);
  26.                       glVertex3f(0, 1, 0);
  27.                     glEnd;
  28.  
  29.                     glActiveTexture(GL_TEXTURE1);
  30.                     glDisable(GL_TEXTURE_2D);
  31.  
  32.                     glActiveTexture(GL_TEXTURE0);
  33.                     glDisable(GL_TEXTURE_2D);
  34.             end;
  35.  

_________________
Ich bin n00b und das ist auch gut so!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Sep 18, 2004 14:23 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jul 21, 2004 22:39
Beiträge: 360
Wohnort: UK, Scotland
Zitat:
Hi@ll,
Have n small problem with Multitexturing. If I activate the procedure with Multitexturing, then my whole other (untexturierten) objects in another color are represented (approx. the same color, as the texture has). If I activated the procedure and then by running time again deactivate, then the color is not changed, it thus in such a way does not remain, as after the call of the procedure with Multitexturing.


If im correct in understanding googles translation your problem is that the texture in the multtexture procedure is placed on objects which arn't ment to have textures.

Code:
  1.  
  2. if GetCvarB('Cg_MultiTexture') then begin
  3.     glActiveTexture(GL_TEXTURE1);
  4.     glDisable(GL_TEXTURE_2D);
  5.  
  6.     glActiveTexture(GL_TEXTURE0);
  7.     glDisable(GL_TEXTURE_2D);
  8.   end;
  9.  
  10.  
  11. [Insert Code Here!]
  12.  
  13.  
  14. if GetCvarB('Cg_MultiTexture') then begin
  15.       glActiveTexture(GL_TEXTURE1);
  16.       glEnable(GL_TEXTURE_2D);
  17.       glActiveTexture(GL_TEXTURE0);
  18. end;
  19.  


Code above works for me (note: GetCvarB('Cg_MultiTexture') should be replaced by a boolean if multitexture is optional). Any code placed where "[Insert Code Here!]" is will not have the multitexture's texture ontop of the "normal" texture(if one is used).

Whats in the other procedure?(non multitexture one)

_________________
Free Map Editor - Game Requirements - Stucuk.Net
-Stu


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Sep 18, 2004 16:43 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Jun 09, 2003 16:47
Beiträge: 35
Wohnort: Bielefeld
You are correct in understanding my problem, but after i changed anything, i have a new problem. The textures on the gluSphere arent shown?! Here is my code, but isnt complete -> I still have other objects, wich you can see in the Draw - procedure.
What is here wrong again?

Code:
  1.  
  2. procedure TGLForm.Draw();
  3.  
  4.             procedure Lights();
  5.             var i:Integer;
  6.             begin
  7.               glEnable(GL_TEXTURE_2D);
  8.  
  9.               for i := 0 to 3 do
  10.               begin
  11.                 glColor3f(0,1,0);
  12.                 glBindTexture(GL_TEXTURE_2D, tex[0]);
  13.                 glPushMatrix;
  14.                     glTranslatef(0.5 + LightsP1[i].x, 0.5 + LightsP1[i].y,-1.5 - LightsP1[i].z);
  15.                     glRotatef(-LightsRot, 1,0,0);
  16.                     gluQuadricTexture(LightsP1[i].Quadric, True);
  17.                     glPushMatrix;
  18.                     glRotatef(90,0,1,0);
  19.                     gluSphere(LightsP1[i].Quadric, 0.4, 20, 20);
  20.                     glPopMatrix;
  21.                 glPopMatrix;
  22.  
  23.                 glBindTexture(GL_TEXTURE_2D, tex[1]);
  24.                 glColor3f(1,0,0);
  25.                 glPushMatrix;
  26.                     glTranslatef(0.5 + LightsP2[i].x, 0.5 + LightsP2[i].y,-1.5 - LightsP2[i].z);
  27.                     glRotatef(LightsRot, 1,0,0);
  28.                     gluQuadricTexture(LightsP2[i].Quadric, True);
  29.                     glPushMatrix;
  30.                     glRotatef(90,0,1,0);
  31.                     gluSphere(LightsP2[i].Quadric, 0.4, 20, 20);
  32.                     glPopMatrix;
  33.                 glPopMatrix;
  34.               end; {end for}
  35.  
  36.               glDisable(GL_TEXTURE_2D);
  37.             end; {end Lights}
  38.  
  39.  
  40.  
  41.             procedure TestTextures2();
  42.             begin
  43.                  glActiveTexture(GL_TEXTURE1);
  44.                  glEnable(GL_TEXTURE_2D);
  45.                  glBindTexture(GL_TEXTURE_2D, tex[0]);
  46.                  glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
  47.  
  48.                  glActiveTexture(GL_TEXTURE0);
  49.                  glEnable(GL_TEXTURE_2D);
  50.                  glBindTexture(GL_TEXTURE_2D, tex[2]);
  51.                  glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
  52.  
  53.                     glBegin(GL_QUADS);
  54.                      glMultiTexCoord2f(GL_TEXTURE0, 0, 0);
  55.                      glMultiTexCoord2f(GL_TEXTURE1, 0, 0);
  56.                       glVertex3f(0, 0, 0);
  57.                      glMultiTexCoord2f(GL_TEXTURE0, 0, 1);
  58.                      glMultiTexCoord2f(GL_TEXTURE1, 0, 1);
  59.                       glVertex3f(1, 0, 0);
  60.                      glMultiTexCoord2f(GL_TEXTURE0, 1, 1);
  61.                      glMultiTexCoord2f(GL_TEXTURE1, 1, 1);
  62.                       glVertex3f(1, 1, 0);
  63.                      glMultiTexCoord2f(GL_TEXTURE0, 1, 0);
  64.                      glMultiTexCoord2f(GL_TEXTURE1, 1, 0);
  65.                       glVertex3f(0, 1, 0);
  66.                     glEnd;
  67.  
  68.                     glActiveTexture(GL_TEXTURE0);
  69.                     glDisable(GL_TEXTURE_2D);
  70.  
  71.                     glActiveTexture(GL_TEXTURE1);
  72.                     glDisable(GL_TEXTURE_2D);
  73.  
  74.             end;
  75.  
  76. begin
  77.   glTranslatef(0,0,-15);
  78.  
  79.   glRotatef(xRot,1,0,0);
  80.   glRotatef(yRot,0,1,0);
  81.   glRotatef(zRot,0,0,1);
  82.  
  83.   glTranslatef(-4.5,-4.5,-4.5);
  84.  
  85.   glEnable(GL_LINE_SMOOTH); // Antialiasing
  86. //  Arrow; //without textures
  87. //  PlayField; //without textures
  88.   Lights; //with textures
  89.  
  90.   glEnable(GL_CULL_FACE); // Quads nur von einer seite rendern
  91. //  Base; //with textures
  92.  
  93.   if test then  // by pressing "b" -> "test" will be "not test"
  94.     TestTextures2;
  95. //  TestMatrix;
  96.   glDisable(GL_CULL_FACE);
  97.  
  98.   glDisable(GL_LINE_SMOOTH);
  99. end;
  100.  

_________________
Ich bin n00b und das ist auch gut so!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Sep 18, 2004 23:19 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Code:
  1. glActiveTexture(GL_TEXTURE0);
  2. glDisable(GL_TEXTURE_2D);


OpenGL ist eine Statemachine, also kein Wunder dass deine Kugel untexturiert ist, da Texturing auf TMU0 doch ausgeschaltet ist...

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Sep 19, 2004 00:12 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Jun 09, 2003 16:47
Beiträge: 35
Wohnort: Bielefeld
ach so...vielen dank!!!

Wie mach ich den Multitexturing auf gluSphere's?

_________________
Ich bin n00b und das ist auch gut so!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Sep 19, 2004 20:10 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Gar nicht - glu Primitive erstellen nur Texturkoordinaten für die TMU0 - du kannst allerdings mit glTexGen automatisch Texturkoordinaten für sämtliche TMUs und beliebige Geometrie berechnen lassen, allerdings bist du in der automatischen Texturkoordinatengenerierung etwas eingeschränkt.
Du kannst entweder Shader verwenden, bei denen du die selben Texturkoordinaten für beliebige Texture Image Units verwendest, oder du erstellst deine eigenen Routinen, Primitive wie Kugeln zu zeichnen, wo du dann Texturkoordinaten für irgendwelche TMUs generieren kannst, wie du lustig und launig bist (das ist ohnehin eine gute Idee, da die GLU Primitive nicht unbedingt besonders optimiert sind).

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


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 » Einsteiger-Fragen


Wer ist online?

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