Mode Penetapan Alamat Tekstur (Direct3D 9)
Aplikasi Direct3D Anda dapat menetapkan koordinat tekstur ke puncak apa pun dari primitif apa pun. Untuk detailnya, lihat Koordinat Tekstur (Direct3D 9). Biasanya, koordinat tekstur u- dan v yang Anda tetapkan ke puncak berada dalam rentang 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 diurutkan di seluruh primitif.
Direct3D memungkinkan aplikasi untuk melakukan pembungkusan tekstur. Penting untuk dicatat bahwa mengatur mode pengalamatan tekstur ke D3DTADDRESS_WRAP tidak sama dengan melakukan pembungkusan tekstur. Mengatur mode pengalamatan tekstur ke D3DTADDRESS_WRAP menghasilkan beberapa salinan tekstur sumber yang diterapkan ke primitif saat ini, dan memungkinkan pembungkusan tekstur mengubah cara sistem memerkosterisasi poligon bertekstur. Untuk detailnya, lihat Pembungkusan Tekstur (Direct3D 9).
Mengaktifkan pembungkusan tekstur secara efektif membuat koordinat tekstur di luar rentang [0.0, 1.0] tidak valid, dan perilaku untuk memperkosa 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.
Mengatur Mode Penetapan Alamat
Anda dapat mengatur mode pengalamatan tekstur untuk tahap tekstur individual dengan memanggil metode IDirect3DDevice9::SetSamplerState . Tentukan pengidentifikasi tahap tekstur yang diinginkan dalam parameter Sampler . Atur parameter Jenis ke nilai D3DSAMP_ADDRESSU, D3DSAMP_ADDRESSV, atau D3DSAMP_ADDRESSW untuk memperbarui mode u-, v-, atau w-addressing satu per satu. Parameter Nilai menentukan mode mana yang sedang diatur. Ini bisa menjadi anggota jenis enumerasi D3DTEXTUREADDRESS . Untuk mengambil mode alamat tekstur saat ini untuk tahap tekstur, panggil IDirect3DDevice9::GetSamplerState, menggunakan D3DSAMP_ADDRESSU, D3DSAMP_ADDRESSV, atau anggota D3DSAMP_ADDRESSW enumerasi D3DSAMPLERSTATETYPE untuk mengidentifikasi mode alamat yang Anda inginkan informasinya.
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 tersebut. Perangkat penyajian mengkomunikasikan batas ini di anggota MaxTextureRepeat dari struktur D3DCAPS9 saat Anda mengambil kemampuan perangkat. Nilai dalam anggota ini menjelaskan berbagai koordinat tekstur yang diizinkan oleh 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.
Interpretasi MaxTextureRepeat juga dipengaruhi oleh bit kemampuan D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE. Ketika bit ini diatur, nilai dalam anggota MaxTextureRepeat digunakan dengan tepat seperti yang dijelaskan. Namun, ketika D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE tidak diatur, batasan pengulangan tekstur bergantung pada ukuran tekstur yang diindeks oleh koordinat tekstur. Dalam hal ini, MaxTextureRepeat harus diskalakan dengan ukuran tekstur saat ini pada tingkat detail terbesar untuk menghitung rentang koordinat tekstur yang valid. Misalnya, mengingat dimensi tekstur 32 dan MaxTextureRepeat 512, rentang koordinat tekstur aktual yang valid adalah 512/32 = 16, sehingga koordinat tekstur untuk perangkat ini harus dalam rentang -16.0 hingga +16.0.
Informasi tambahan tentang mode alamat tekstur terkandung dalam topik berikut.
- Mode Alamat Tekstur Bungkus (Direct3D 9)
- Mode Alamat Tekstur Cermin (Direct3D 9)
- Mode Alamat Tekstur Klem (Direct3D 9)
- Mode Alamat Tekstur Warna Batas (Direct3D 9)
Topik terkait