Mode alamat tekstur

Aplikasi Direct3D Anda dapat menetapkan koordinat tekstur ke puncak primitif apa pun. Biasanya, koordinat tekstur u-dan v yang Anda tetapkan ke vertex berada dalam kisaran 0,0 hingga 1,0 inklusif. Namun, dengan menetapkan koordinat tekstur di luar rentang tersebut, Anda dapat membuat efek tekstur khusus tertentu. .

Anda mengontrol apa yang dilakukan Direct3D dengan koordinat tekstur yang berada di luar rentang [0.0, 1.0] dengan mengatur mode pengalamatan tekstur. Misalnya, Anda dapat meminta aplikasi mengatur mode penetapan alamat tekstur sehingga tekstur diratakan di seluruh primitif.

Direct3D memungkinkan aplikasi untuk melakukan pembungkusan tekstur. Lihat Pembungkusan tekstur.

Mengaktifkan pembungkusan tekstur secara efektif membuat koordinat tekstur di luar rentang [0.0, 1.0] tidak valid, dan perilaku untuk memerkosa koordinat tekstur yang menunggak tersebut tidak terdefinisi dalam kasus ini. Saat pembungkusan tekstur diaktifkan, mode pengalamatan tekstur tidak digunakan. Berhati-hatilah bahwa aplikasi Anda tidak menentukan koordinat tekstur yang lebih rendah dari 0,0 atau lebih tinggi dari 1,0 saat pembungkusan tekstur diaktifkan.

Ringkasan mode pengalamatan tekstur

Mode alamat tekstur Deskripsi
Membungkus Mengulangi tekstur pada setiap persimpangan bilangan bulat.
Cermin Mencerminkan tekstur di setiap batas bilangan bulat.
Clamp Jepit koordinat tekstur Anda ke rentang [0.0, 1.0]; Mode klem menerapkan tekstur sekali, lalu mengoleskan warna piksel tepi.
Warna Batas Menggunakan warna batas arbitrer untuk koordinat tekstur apa pun di luar rentang 0,0 hingga 1,0, inklusif.

 

Mode alamat tekstur bungkus

Mode alamat tekstur Bungkus membuat Direct3D mengulangi tekstur pada setiap persimpangan bilangan bulat.

Misalkan, misalnya, aplikasi Anda membuat primitif persegi dan menentukan koordinat tekstur (0,0,0,0), (0,0,3,0), (3,0,3,0), dan (3,0,0,0). Mengatur mode pengalamatan tekstur ke "Bungkus" menghasilkan tekstur yang diterapkan tiga kali dalam arah u-dan v, seperti yang ditunjukkan dalam ilustrasi berikut.

illustration of a face texture wrapped in the u-direction and the v-direction

Kontraskan ini dengan mode alamat tekstur Mirror berikut.

Mode alamat tekstur cermin

Mode alamat tekstur Cermin menyebabkan Direct3D mencerminkan tekstur di setiap batas bilangan bulat.

Misalkan, misalnya, aplikasi Anda membuat primitif persegi dan menentukan koordinat tekstur (0,0,0,0), (0,0,3,0), (3,0,3,0), dan (3,0,0,0). Mengatur mode pengalamatan tekstur ke "Cermin" menghasilkan tekstur yang diterapkan tiga kali di u- dan v-directions. Setiap baris dan kolom lain yang diterapkan adalah gambar cermin dari baris atau kolom sebelumnya, seperti yang diperlihatkan dalam ilustrasi berikut.

illustration of mirror images in a 3x3 grid

Kontraskan ini dengan mode alamat tekstur Bungkus sebelumnya.

Mode alamat tekstur jepit

Mode alamat tekstur Clamp menyebabkan Direct3D menjepit koordinat tekstur Anda ke rentang [0.0, 1.0]; Mode klem menerapkan tekstur sekali, lalu mengoleskan warna piksel tepi.

Misalkan aplikasi Anda membuat primitif persegi dan menetapkan koordinat tekstur (0,0,0,0), (0,0,3,0), (3,0,3,0), dan (3,0,0,0) ke simpul primitif. Mengatur mode penetapan alamat tekstur ke "Clamp" menghasilkan tekstur yang diterapkan sekali. Warna piksel di bagian atas kolom dan akhir baris masing-masing diperluas ke bagian atas dan kanan primitif.

Ilustrasi berikut menunjukkan tekstur yang dijepit.

illustration of a texture and a clamped texture

Mode alamat tekstur Warna Batas

Mode alamat tekstur Warna Batas menyebabkan Direct3D menggunakan warna arbitrer, yang dikenal sebagai warna batas, untuk koordinat tekstur apa pun di luar rentang 0,0 hingga 1,0, inklusif.

Dalam ilustrasi berikut, aplikasi menentukan bahwa tekstur diterapkan ke primitif menggunakan batas merah.

illustration of a texture and a texture with a red border

Batasan perangkat

Meskipun sistem umumnya memungkinkan koordinat tekstur di luar kisaran 0,0 dan 1.0, inklusif, keterbatasan perangkat keras sering memengaruhi seberapa jauh di luar koordinat tekstur rentang itu. Perangkat penyajian mengkomunikasikan batas untuk berbagai koordinat tekstur yang diizinkan oleh perangkat, saat Anda mengambil kemampuan perangkat.

Misalnya, jika nilai ini adalah 128, maka koordinat tekstur input harus disimpan dalam rentang -128.0 hingga +128.0. Melewati simpul dengan koordinat tekstur di luar rentang ini tidak valid. Pembatasan yang sama berlaku untuk koordinat tekstur yang dihasilkan sebagai hasil dari pembuatan koordinat tekstur otomatis dan transformasi koordinat tekstur.

Batasan pengulangan tekstur dapat bergantung pada ukuran tekstur yang diindeks oleh koordinat tekstur. Dalam hal ini, mengingat dimensi tekstur adalah 32, dan rentang koordinat tekstur yang diizinkan oleh perangkat adalah 512, rentang koordinat tekstur aktual yang valid oleh karena itu adalah 512/32 = 16, sehingga koordinat tekstur untuk perangkat ini harus berada dalam rentang -16.0 hingga +16.0.

Tekstur