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

Aktuelle Zeit: Fr Jul 18, 2025 11:21

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



Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: gluQuadric gekachelt texturieren?
BeitragVerfasst: Sa Jan 23, 2010 17:31 
Offline
DGL Member
Benutzeravatar

Registriert: Di Okt 23, 2007 18:03
Beiträge: 49
Wohnort: Dortmund-Scharnhorst
Ich hab im Wiki so ziemlich alles, was ich zu gluQuadrics findne konnte durchgelesen, aber auf meine Frage leider keine Antwort gefunden (womit ich fast schon glaube, dass es nicht möglich ist).

Vorgeschichte: Also, ich schreibe gerade einen simplen Modeleditor, in diesem nutze ich gluQuadrics um Kugeln, Zylinder etc. zu zeichnen, da das damit ja ziemlich einfach geht. Im Moment bin ich dabei, die entstandenen Körper zu texturieren. Es ist ja möglich Texturen zu binden, die dann auch beim zeichnen des quadrics benutzt werden, hierbei wird allerdings die Textur einmal über das gesamte Objekt gespannt. Das sieht dann wenn die Textur relativ klein und das Objekt relativ groß werden soll, nicht mehr wirklich schön aus.

Was ich dazu wissen wollte: Ist es möglich, das gluQuadric so zu zeichnen, dass es die gebundene Textur gekachelt benutzt? Also, die Textur schön nebeneinander wiederholend benutzt?


Falls es nicht geht, welche weiteren Möglichkeiten stehen mir dann offen, was mir einfällt sind:
1. Zeichenroutine für die Kugeln/Zylinder etc. selber schreiben und passende Texturkoordinaten verwenden
2. Gekachelte Texturen benutzen -> führt aber zu erhöhter Texturgröße


MfG

Basti

_________________
Those who fear the dark never saw what light can do...

Bedecke deinen Himmel Zeus...

Fetter grüne du Laub...


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Sa Jan 23, 2010 17:39 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Du könntest eine Texturmatrix benutzen.

Code:
  1. glMatrixMode(GL_TEXTURE);
  2. glLoadIdentity();
  3. glScale(faktor, faktor, faktor);
  4. glMatrixMode(GL_MODELVIEW);
  5. // ...


Also faktor = 5, wenn du 5 mal wiederholen willst.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Sa Jan 23, 2010 18:54 
Offline
DGL Member
Benutzeravatar

Registriert: Di Okt 23, 2007 18:03
Beiträge: 49
Wohnort: Dortmund-Scharnhorst
Der Ansatz klingt gut, aber irgendwie will es noch nicht wirklich. Ich hab es mal ausprobiert und auch ein wenig an den Parametern rumgespielt, im Anhang die Ergebnisse:

Kugel1 ist die Kugel mit "Standardtexturierung" d.h. kein aufruf von glscalef auf der Texturmatrix.

Kugel2 ist die Kugel mit dem Aufruf von glscale3f(1,10,5).

Kugel3 ist die Kugel mit dem aufruf von glscalef(5,5,5).

Rechts unten im Bild ist jeweils die gebundene Textur.


Der Code sieht wie folgt aus:

Code:
  1.  
  2. procedure TKugel.render;
  3. begin
  4.   gluQuadricTexture(hilfsobjekt,texturiert); //hilfsobjekt ist das gluquadric texturiert = true
  5.  
  6.   glMatrixMode(GL_TEXTURE);
  7.   glloadidentity;
  8.   glpushmatrix;
  9.   glScalef(1, 1, 1);
  10.  
  11.   glMatrixMode(GL_MODELVIEW);
  12.   gluSphere(Hilfsobjekt, Radius, 25, 25);  //hier wird die kugel gezeichnet Slices=Stacks=25
  13.  
  14.   glMatrixMode(GL_TEXTURE);
  15.   glpopmatrix;
  16.  
  17.   glMatrixMode(GL_MODELVIEW);
  18.  
  19. end;
  20.  


MfG

Basti


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

_________________
Those who fear the dark never saw what light can do...

Bedecke deinen Himmel Zeus...

Fetter grüne du Laub...


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Sa Jan 23, 2010 19:23 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Versuch mal das folgende beim laden der Textur:
Code:
  1. glTexParameteri(GL_TEXTURE_WRAP_S, GL_REPEAT);
  2. glTexParameteri(GL_TEXTURE_WRAP_T, GL_REPEAT);
  3. glTexParameteri(GL_TEXTURE_WRAP_R, GL_REPEAT);

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Jan 24, 2010 14:48 
Offline
DGL Member
Benutzeravatar

Registriert: Di Okt 23, 2007 18:03
Beiträge: 49
Wohnort: Dortmund-Scharnhorst
Code:
  1.    
  2.       glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S, GL_REPEAT);
  3.       glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T, GL_REPEAT);
  4.       glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_R, GL_REPEAT);



Vielen Dank, mit dem obigen Code funktioniert es perfekt.

MfG

Basti

_________________
Those who fear the dark never saw what light can do...

Bedecke deinen Himmel Zeus...

Fetter grüne du Laub...


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: Google [Bot] und 10 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 | 17 Queries | GZIP : On ]