Ich studiere einen Text über texture mapping
und in der preparing to draw
Sitzung lese ich:
Definieren Sie die Texturumbruchparameter. Dies steuert, was passiert, wenn eine Texturkoordinate größer als 1,0 oder kleiner als 0,0 auftritt:
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S,wrap);
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T,wrap);
Dabei ist Wrap: GL_REPEAT :
Gibt an, dass dieses Muster wiederholt wird (dh Wrap-Around), wenn transformierte Texturkoordinaten von weniger als 0,0 oder mehr als 1,0 auftreten.
GL_CLAMP: Gibt an, dass das Muster bei 0,0 oder 1,0 bleibt.
Aber es gibt keine Erklärung, warum solche Texturkoordinaten auftreten?
Angenommen, ich habe gerade ein Rechteck gezeichnet und möchte ein Bild als Textur darauf anwenden. Ist es möglich, auf solche Koordinaten zu stoßen?
glTexCoord2f(0, 2);
um ihn beispielsweise zu haben . Dies hat sowohl im Code als auch beim Ausführen des Programms eine sehr genau definierte Bedeutung. Wenn Sie dies sehen, hat der Programmierer dies absichtlich getan, weil es das gewünschte Ergebnis liefert.Ja, Sie können auf Texturkoordinaten stoßen, die größer als
1.0
und kleiner als sind0.0
.Dies hängt vollständig von dem Modell ab, das Sie geladen haben. Normalerweise werden für jeden Scheitelpunkt Position, Normal und Texturkoordinate gespeichert. In den meisten Netzdateiformaten ist die Texturkoordinate nicht auf einen Bereich beschränkt.
Dies wird verwendet, um eine Textur zu wiederholen . Um zum Beispiel eine Textur vier Mal zwischen einem Quad von Eckpunkten zu überbrücken, wäre die Texturkoordinaten
0,0
,0,4
,4,0
und4,4
. Ohne Textur Verpackung, würden Sie zusätzliche Eckpunkte müssen die Oberfläche in 4 mal 4 Teilflächen mit jeweils den Texturkoordinaten spalten0,0
,0,1
,1,0
,1,1
. Weniger Eckpunkte führen zu einer besseren Renderleistung.Typischerweise ist es nicht erwünscht, dass der Benutzer die Kanten einer wiederholten Textur bemerkt. Daher sind wiederholte Texturen in den meisten Fällen kachelbar. Dann wird die rechte Kante nahtlos zur linken und die obere zur unteren Kante ausgeblendet. Auf diese Weise ist der Übergang reibungslos und hoffentlich nicht vom Benutzer bemerkt.
Ein fortgeschritteneres, aber verwandtes Thema ist es, die Tatsache, dass dieselbe Textur mehrmals wiederholt wurde, geschickt zu verschleiern. Zum Beispiel ist das Mischen von wiederholten Texturen unterschiedlicher Größe, zum Beispiel einer Wandtextur und einem Schmutzaufkleber, eine übliche Technik.
quelle
Without texture wrapping, you would need additional vertices to split the surface into 4 times 4 sub surfaces with each the texture coordinates 0,0, 0,1, 1,0, 1,1
Das ist eine echte praktische Erklärung! Vielen Dank!