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

Aktuelle Zeit: Do Mär 28, 2024 15:16

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: Texturen beeinflussen Farbe???
BeitragVerfasst: Sa Jun 03, 2006 10:53 
Offline
DGL Member

Registriert: Sa Feb 04, 2006 10:14
Beiträge: 21
Hi guys,

Ich hab mal ne kleine Frage: Kann es sein, dass das Einbinden von Texturen Auswirkungen auf die Farbe von Objekten hat?
also ganz konkret...
Ich hab eine Textur auf Quadrate geklebt und dann sind alle weißen Flächen ohne Texturen plötzlich grau geworden...
also wenn ich den Befehl: glenable(gl_texture_2d); rausnehm dann sind zwar keine Texturen da aber dafür ist es wieder weiß...
also ich hab mal den Code angehängt... bzw die meiner Meinung nach wichtigen Teile für die Texturen, da es sonst zu groß ist...

wär echt cool wenn mir jemand helfen könnte...

thx a lot :)

puma


Code:
  1.  
  2. var outsidewall:gluInt;
  3.  
  4. ...
  5.  
  6. procedure InitTextures;
  7. var
  8. textur: PTAUX_RGBImageRec;
  9. begin
  10.  
  11. textur := auxDIBImageLoadA('wallpapers\outside.bmp');
  12. if not Assigned( textur ) then
  13.         begin
  14.         showmessage('Fehler beim Laden der Textur');
  15.         end;
  16. glGenTextures(1, outsidewall);
  17. glBindTexture(GL_TEXTURE_2D, outsidewall);
  18. glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_linear);
  19. glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_linear);
  20. glTexImage2D(GL_TEXTURE_2D, 0, 3, textur^.sizeX, textur^.sizeY, 0, GL_RGB,
  21. GL_UNSIGNED_BYTE, textur^.data);
  22.  
  23. end;
  24.  
  25. ...
  26.  
  27. procedure render;
  28. var x,h,y,z,r,alpha:real;
  29. begin
  30. glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); //Farb und Tiefenpuffer löschen
  31. glLoadIdentity;
  32. ...
  33. glBindTexture(GL_TEXTURE_2D,outsidewall);        // Hier is normalerweiße ne Schleife die dann auch die Variablen füllt <!-- s;-) --><img src=\"{SMILIES_PATH}/icon_wink.gif\" alt=\";-)\" title=\"Wink\" /><!-- s;-) -->
  34.         glBegin(GL_Quads);
  35.         gltexcoord2f(0,0);
  36.         glVertex3f(x,y,z);
  37.         gltexcoord2f(0,0.5);
  38.         glVertex3f(0,y,0);
  39.         y:=y+h;
  40.         gltexcoord2f(0.5,0.5);
  41.         glVertex3f(0,y,0);
  42.         gltexcoord2f(1,0);
  43.         glVertex3f(x,y,z);
  44.         glEnd;
  45. ...
  46. SwapBuffers(form1.myDC);
  47. end;
  48.  
  49. ...
  50.  
  51. procedure TForm1.FormCreate(Sender: TObject);
  52. begin
  53. form1.myDC:= GetDC(Handle);
  54. SetupPixelFormat;
  55. myRC:= wglCreateContext(myDC);
  56. wglMakeCurrent(myDC, myRC);
  57. glEnable(GL_DEPTH_TEST);
  58.  
  59. glenable(gl_texture_2d);
  60. InitTextures;
  61. glLoadIdentity;
  62.  
  63.  
  64. end;
  65.  
  66. procedure TForm1.FormDestroy(Sender: TObject);
  67. begin
  68. wglmakecurrent(0,0);
  69. wgldeletecontext(mydc);
  70. releasedc(handle,mydc);
  71. end;
  72.  
  73. procedure TForm1.FormResize(Sender: TObject);
  74. begin
  75. glViewport(0, 0, Width, Height);    // Setzt den Viewport für das OpenGL Fenster
  76. glMatrixMode(GL_PROJECTION);        // Matrix Mode auf Projection setzen
  77. glLoadIdentity();                   // Reset View
  78. gluPerspective(45.0, Width/Height, 1, 100.0);  // Perspektive den neuen Maßen anpassen.
  79. glMatrixMode(GL_MODELVIEW);         // Zurück zur Modelview Matrix
  80. glLoadIdentity();
  81. end;
  82.  
[/code]


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jun 03, 2006 11:12 
Offline
DGL Member
Benutzeravatar

Registriert: So Dez 21, 2003 17:36
Beiträge: 141
Ja das ist normal, die Textur wird halt mit der angegebenen Farbe verrechnet. Wenn du Texturen an hast (und eine gebunden) und keine Koordinaten angibst, dann wird die Farbe halt mit nur einem Texturpunkt verrechnet (0,0?). Wenn du nur farbige Objekte zeichnen willst ohne Texturen, mach vorher mit glDisable(GL_TEXTURE_2D) die Texturen wieder aus.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jun 03, 2006 18:03 
Offline
DGL Member

Registriert: Sa Feb 04, 2006 10:14
Beiträge: 21
ok sorry dass ich so dumm nachfrag aber wo genau soll ich es denn ausschalten bzw. einfügen? :?:

puma :(


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jun 03, 2006 22:13 
Offline
Fels i.d. Brandung
Benutzeravatar

Registriert: Sa Mai 04, 2002 19:48
Beiträge: 3827
Wohnort: Tespe (nahe Hamburg)
OpenGL ist eine State-Machine. Ergo Du versetzt OpenGL in einen Status und dieser wird auf alle etwaigen Zeichenoperationen angewandt, bis Du diese widerrufst. Normalerweise geschieht das aktivieren mittels der Funktion glEnable und das deaktivieren mit glDisable. Wie Fletcher bereits sagt, würde ein Gebilde, dass Du zeichnest nicht mehr texturiert werden, wenn Du vor der Operation ein glDisable(GL_TEXTURE_2D); aufrufen würdest. Rufst Du das gleiche danach wieder mit einem glEnable auf, würden alle Objekte wieder texturiert werden. Meist wird die Texturierung verwendet zusammen mit der Farbwert 1.0/1.0/1.0. Dadurch, dass diese Farbe mit der Texture multipliziert wird, wird das Ergebnis exakt so wie die Textur im Bildeditor aussehen.

_________________
"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: Sa Jun 03, 2006 23:36 
Offline
DGL Member

Registriert: Mi Dez 15, 2004 20:36
Beiträge: 454
Wohnort: Wien, Österreich
Zitat:
Ja das ist normal, die Textur wird halt mit der angegebenen Farbe verrechnet.
Das nur wenn "texture enviroment" auf GL_MODULATE gesezt ist, was "standard" der Fall ist. Wenn man folgendes aufruft, dann ist die angegebene Farbe "egal", wird nicht verrechnet.
Code:
  1. glTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL );

_________________
"Meine Mutter sagt : 'Dumm ist der, der Dummes tut'." - Forrest Gump


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jun 04, 2006 09:52 
Offline
DGL Member

Registriert: Sa Feb 04, 2006 10:14
Beiträge: 21
thx a lot @ all
ich hab das problem einfach mit dem disable lösen können...

noch danke an alle... :D

puma


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 9 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:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.073s | 19 Queries | GZIP : On ]