Saya mempelajari teks tentang texture mapping
dan dalam preparing to draw
sesi ini, saya membaca:
Tentukan parameter pembungkus tekstur. Ini akan mengontrol apa yang terjadi ketika tekstur berkoordinasi lebih besar dari 1,0 atau kurang dari 0,02 dijumpai:
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S,wrap);
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T,wrap);
di mana wrap adalah:
GL_REPEAT: menetapkan bahwa pola ini akan berulang (yaitu wrap-around) jika ditemui koordinat tekstur yang kurang dari 0,0 atau lebih besar dari 1,0.
GL_CLAMP: menentukan bahwa pola akan "menempel" ke nilai pada 0,0 atau 1,0.
Tetapi tidak ada penjelasan apa alasan menemukan koordinat tekstur seperti itu?
Sebagai contoh misalkan saya baru saja menggambar persegi panjang dan saya ingin menerapkan gambar sebagai tekstur di atasnya, apakah mungkin untuk menemukan koordinat seperti itu?
glTexCoord2f(0, 2);
misalnya. Ini memiliki arti yang didefinisikan dengan sangat spesifik baik dalam kode dan ketika program sedang berjalan. Jika Anda melihat ini, programmer sengaja melakukannya karena memberikan hasil yang mereka inginkan.Ya, Anda dapat menemukan koordinat tekstur lebih besar dari
1.0
dan lebih kecil dari0.0
.Ini tergantung sepenuhnya pada model, Anda memuat. Biasanya, untuk setiap simpul ada posisi, koordinat normal, dan tekstur disimpan. Dalam sebagian besar format file mesh, koordinat tekstur tidak terbatas pada rentang apa pun.
Ini digunakan untuk mengulang suatu tekstur . Misalnya, untuk rentang tekstur empat waktu antara quad simpul, koordinat tekstur akan
0,0
,0,4
,4,0
dan4,4
. Tanpa pembungkus tekstur, Anda akan perlu simpul tambahan untuk membagi permukaan menjadi 4 kali 4 sub permukaan dengan masing-masing koordinat tekstur0,0
,0,1
,1,0
,1,1
. Lebih sedikit simpul menghasilkan kinerja rendering yang lebih baik.Biasanya, tidak diinginkan bahwa pengguna memperhatikan tepi tekstur berulang. Oleh karena itu, tekstur berulang dapat ubin dalam banyak kasus. Daripada berarti, tepi kanan memudar mulus ke kiri dan tepi atas ke bawah. Dengan cara ini, transisinya mulus dan mudah-mudahan tidak diperhatikan oleh pengguna.
Topik yang lebih maju, tetapi terkait, untuk mengaburkan fakta bahwa tekstur yang sama diulang berkali-kali. Misalnya, memadukan tekstur berulang dengan ukuran yang berbeda, misalnya tekstur dinding dan stiker tanah, adalah teknik yang umum.
sumber
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
Itulah beberapa penjelasan praktis yang nyata! Terima kasih!