Studiuję tekst texture mapping
i na preparing to draw
sesji czytam:
Zdefiniuj parametry zawijania tekstur. To kontroluje, co się stanie, gdy zostanie napotkana współrzędna tekstury większa niż 1,0 lub mniejsza niż 0,0:
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S,wrap);
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T,wrap);
gdzie wrap jest:
GL_REPEAT: określa, że ten wzór będzie się powtarzał (tj. zawijać), jeśli napotkane zostaną przekształcone współrzędne tekstury mniejsze niż 0,0 lub większe niż 1,0.
GL_CLAMP: określa, że wzór będzie „przyklejał się” do wartości przy 0,0 lub 1,0.
Ale nie ma wyjaśnienia, z jakiego powodu występują takie współrzędne tekstury?
Załóżmy na przykład, że właśnie narysowałem prostokąt i chcę zastosować na nim obraz jako teksturę, czy można spotkać takie współrzędne?
glTexCoord2f(0, 2);
na przykład. Ma to bardzo ściśle określone znaczenie zarówno w kodzie, jak i podczas działania programu. Jeśli to zobaczysz, programista celowo to zrobił, ponieważ daje pożądany rezultat.Tak, możesz napotkać współrzędne tekstury większe
1.0
lub mniejsze niż0.0
.Zależy to całkowicie od załadowanego modelu. Zwykle dla każdego wierzchołka jest przechowywana współrzędna położenia, normalna i tekstury. W większości formatów plików siatki współrzędna tekstury nie jest ograniczona do żadnego zakresu.
Służy do powtarzania tekstury . Na przykład, aby rozciągać się tekstura cztery razy pomiędzy quad wierzchołków współrzędne struktura będzie
0,0
,0,4
,4,0
i4,4
. Tekstury bez zawijania, że potrzebne są dodatkowe wierzchołki podzielić powierzchnię na 4 razy 4 powierzchnie sub ze sobą współrzędnych tekstur0,0
,0,1
,1,0
,1,1
. Mniej wierzchołków powoduje lepszą wydajność renderowania.Zazwyczaj nie jest pożądane, aby użytkownik zauważył krawędzie powtarzającej się tekstury. Dlatego w większości przypadków powtarzające się tekstury można kafelkować. Niż oznacza, że prawa krawędź płynnie zanika do lewej, a górna krawędź do dolnej. W ten sposób przejście jest płynne i miejmy nadzieję, że użytkownik nie zauważy tego.
Bardziej zaawansowanym, ale pokrewnym tematem jest sprytne zaciemnienie faktu, że ta sama tekstura została powtórzona wiele razy. Na przykład mieszanie powtarzających się tekstur o różnych rozmiarach, na przykład tekstury ścian i kalkomanii brudu, jest powszechną techniką.
źródło
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
To jest pewne praktyczne wyjaśnienie! Dzięki!