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

Aktuelle Zeit: Fr Jul 18, 2025 20:16

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



Ein neues Thema erstellen Auf das Thema antworten  [ 12 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: 2 texturen auf einmal ...
BeitragVerfasst: Mo Feb 26, 2007 14:42 
Offline
DGL Member

Registriert: Mo Feb 12, 2007 13:01
Beiträge: 4
hallo,

ich bin noch anfäner und bin grad dabei die tutorials durchzuarbeiten :) dabei gleich mal einen großen dank an die schreiber ... die tutorials sind echt klasse und auch sehr lehreich und gut erklärt.

hab jetz nur ein problem:
und zwar sollen 2 texturen auf ein quadrat gezeichnet werden und da wollte ich fragen, wie ich das machen soll.

so wird ja die textur geladen, oder so :)

Code:
  1. tex := IMG_Load('./steine.jpg');
  2.   if assigned(tex) then
  3.   begin
  4.     glGenTextures(1, @TexID);
  5.     glBindTexture(GL_TEXTURE_2D, TexID);
  6.     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
  7.     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
  8.     glTexImage2D(GL_TEXTURE_2D, 0, 3, tex^.w, tex^.h,0, GL_RGB, GL_UNSIGNED_BYTE, tex^.pixels);
  9.     SDL_FreeSurface(tex);
  10.   end;


auf das quadrat wird sie ja dann so gelegt:

Code:
  1. glEnable(GL_TEXTURE_2D);
  2.  
  3.   glBegin(GL_QUADS);
  4.     glTexCoord2f(0,1); glVertex3f(-1, -1, 0);
  5.     glTexCoord2f(1,1); glVertex3f(1, -1, 0);
  6.     glTexCoord2f(1,0); glVertex3f(1, 1, 0);
  7.     glTexCoord2f(0,0); glVertex3f(-1, 1, 0);
  8.   glEnd;


wie kann ich jetzt noch eine zweite textur auf das quadrat legen? ich kann ja nicht noch eine andere textur mit glEnable(GL_TEXTURE_2D); aufrufen ... oder hab ich da was falsch verstanden?

danke schon mal im voraus :)

MfG BwK :D


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Feb 26, 2007 14:50 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jun 20, 2003 13:59
Beiträge: 134
erstmal herzilich willkommen im bei dgl,

nun zu deiner frage:
das zauberwort was du suchst heist Multitexturing

_________________
ghost-site.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Feb 26, 2007 14:53 
Offline
DGL Member

Registriert: Mo Feb 12, 2007 13:01
Beiträge: 4
danke, ich werd gleich mal schauen :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Mär 03, 2007 00:29 
Offline
DGL Member

Registriert: Sa Feb 03, 2007 11:10
Beiträge: 26
Wohnort: Dingolfing
Multitexturing ist ne tolle Sache, aber meine Karte unterstützt nur 4 Texturen gleichzeitig. Außerdem will ich auch keine potenziellen Spieler mit älteren Karten ausschließen.

Was soll ich da machen? Mehrere Quads übereinander rendern, jeweils mit Alpha? Oder schon vor dem Schicken an die Hardware per Software die Texturen übereinanderzeichnen? Ist das überhaupt praktikabel, also kann ich da noch ordentliche FPS kriegen?

Es geht übrigens um das Rendern von Terrain in einem quadtree-unterteilten Heightmap-Mes. Wenn also Erde und Graß nebenbeinanderliegen, soll das ganze schön ineinander übergeblendet werden. Ein richtiges Problem kriege ich dann, wenn ich einen Graßvertex habe und dann drumrum 8 Vertizes mit anderen Texturen. Sicherlich nicht sehr wahrscheinlich, aber auch möglich. Auch mit 5 Texturen überschreite ich schon die Kapazitäten meiner Graka. Und wie rendere ich noch die Alphamaps dazu?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Mär 03, 2007 01:08 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
Multitexturing wird doch nur benutzt um Details bzw. Licht auf die Flächen zu bekommen, dass ganze kann man ansonsten durch Blenden lösen.
Das Berechnen der überlappten Textur vorher ist keine Alternative, einfach weil man zuviele Texturen dadurch bekommt.

_________________
Steppity,steppity,step,step,step! :twisted:
❆ ❄ ❄ ❄ ❅ ❄ ❆ ❄ ❅ ❄ ❅ ❄ ❅ ❄ ❄
❄ ❄ ❄ ❅ ❄ ❄ ❄ ❅ ❄ ❄ ❆ ❄ ❄


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Mär 03, 2007 08:01 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Wenn die Texture an einem Punkt voll dargestellt werden soll, dann sind 4 Texturen doch kein Problem. Beim Zeichnen eines Quadrates braucht man 4 Punkte und hat dann maximal die 4 Texturen auf die Fläche zu zeichnen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Mär 03, 2007 10:54 
Offline
DGL Member

Registriert: Sa Feb 03, 2007 11:10
Beiträge: 26
Wohnort: Dingolfing
8.

Es sind 8 umliegende Vertizes, die berücksichtig werden müssen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Mär 03, 2007 12:58 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Im schlimmsten Fall hat jeder Punkt eine andere Texture. So wie es verstanden habe, ist die Texture immer 100% an einem Vertex.
Code:
  1. A--B--C
  2. |  |  |
  3. D--E--F
  4. |  |  |
  5. G--H--I


Dann braucht man für jedes der 4 Quadrate ABDE,BCEF,DEGH,EFHI nur 4 Texturen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Mär 03, 2007 15:36 
Offline
DGL Member

Registriert: Sa Feb 03, 2007 11:10
Beiträge: 26
Wohnort: Dingolfing
Ja, so kann man es sagen. Stimmt. Nur mit dem Unterschied, dass ich einen Dreiecksfan zeichne. Dadurch wird das ganze schon etwas komplizierter. Genaugenommen habe ich die Quadtree-Methode aus dem Tutorial Terrain 3 leicht modifiziert implementiert.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mär 14, 2007 16:55 
Offline
DGL Member

Registriert: Mo Feb 12, 2007 13:01
Beiträge: 4
huhu, ich bins nochmal :)

also ich kriegs immernoch nicht hin :( gibts denn keinen befehl, mit dem ich das in etwa so machen könnte:

Code:
  1.   glEnable(TEXTUR1);
  2.  
  3.   glBegin(GL_QUADS);
  4.     glTexCoord2f(0,0); glVertex3f(0, 0, 0);
  5.     glTexCoord2f(1,0); glVertex3f(1, 0, 0);
  6.     glTexCoord2f(1,1); glVertex3f(1, 1, 0);
  7.     glTexCoord2f(0,1); glVertex3f(0, 1, 0);
  8.   glEnd;
  9.  
  10.   glDisable(TEXTUR1);
  11.  
  12.   glEnable(TEXTUR2);
  13.  
  14.   glBegin(GL_QUADS);
  15.     glTexCoord2f(0,0); glVertex3f(-1, 0, 0);
  16.     glTexCoord2f(1,0); glVertex3f(0, 0, 0);
  17.     glTexCoord2f(1,1); glVertex3f(0, 1, 0);
  18.     glTexCoord2f(0,1); glVertex3f(-1, 1, 0);
  19.   glEnd;
  20.  
  21.   glDisable(TEXTUR2);


und das tutorial mit dem multi texturing hab ich auch nich wirklich kappiert :( bin ja erst bei lektion 7 ...

danke im vorraus, BwK


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mär 14, 2007 17:48 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
Mit glEnable aktivierst du ganze "Komplexe".
Texturwechsel erreichst du über glBindTexture(GL_TEXTURE_2D, Texturname);

_________________
Steppity,steppity,step,step,step! :twisted:
❆ ❄ ❄ ❄ ❅ ❄ ❆ ❄ ❅ ❄ ❅ ❄ ❅ ❄ ❄
❄ ❄ ❄ ❅ ❄ ❄ ❄ ❅ ❄ ❄ ❆ ❄ ❄


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mär 14, 2007 20:05 
Offline
DGL Member

Registriert: Mo Feb 12, 2007 13:01
Beiträge: 4
danke, das war genau das, was ich gesucht habe :) endlich hab ichs kappiert :D


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 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.009s | 15 Queries | GZIP : On ]