Kaplama Adresleme Modları (Direct3D 9)
Direct3D uygulamanız, herhangi bir ilkelin herhangi bir köşesine doku koordinatları atayabilir. Ayrıntılar için bkz. Doku Koordinatları (Direct3D 9). Genellikle, bir köşeye atadığınız u ve v-doku koordinatları 0,0 ile 1,0 (dahil) aralığındadır. Ancak, bu aralığın dışında doku koordinatları atayarak belirli özel doku efektleri oluşturabilirsiniz.
Doku adresleme modunu ayarlayarak Direct3D'nin [0.0, 1.0] aralığının dışındaki doku koordinatlarıyla ne yaptığını denetlersiniz. Örneğin, uygulamanızın doku adresleme modunu ayarlamasını sağlayabilirsiniz; böylece doku bir temel öğe üzerinde kutucuklanır.
Direct3D, uygulamaların doku sarmalama gerçekleştirmesini sağlar. Doku adresleme modunu D3DTADDRESS_WRAP olarak ayarlamanın doku sarmalama işlemiyle aynı olmadığını unutmayın. Doku adresleme modunun D3DTADDRESS_WRAP olarak ayarlanması, kaynak dokunun geçerli temel öğeye birden çok kopyasının uygulanmasına neden olur ve doku sarmalamanın etkinleştirilmesi, sistemin dokulanmış çokgenleri tarama şeklini değiştirir. Ayrıntılar için bkz. Doku Sarmalama (Direct3D 9).
Doku sarmalamanın etkin bir şekilde etkinleştirilmesi, [0.0, 1.0] aralığının dışındaki doku koordinatlarını geçersiz kılar ve bu tür sınırlayıcı doku koordinatlarını tarama davranışı bu durumda tanımlanmamıştır. Doku sarmalama etkinleştirildiğinde doku adresleme modları kullanılmaz. Doku sarmalama etkinleştirildiğinde uygulamanızın 0,0'dan küçük veya 1,0'dan yüksek doku koordinatları belirtmediğinden dikkat edin.
Adresleme Modunu Ayarlama
IDirect3DDevice9::SetSamplerState yöntemini çağırarak tek tek doku aşamaları için doku adresleme modları ayarlayabilirsiniz. Sampler parametresinde istenen doku aşaması tanımlayıcısını belirtin. u-, v veya w-addressing modlarını tek tek güncelleştirmek için Type parametresini D3DSAMP_ADDRESSU, D3DSAMP_ADDRESSV veya D3DSAMP_ADDRESSW değerlerine ayarlayın. Değeri parametresi hangi modun ayarlandığını belirler. Bu, D3DTEXTUREADDRESS numaralandırılmış türünün herhangi bir üyesi olabilir. Bir doku aşaması için geçerli doku adres modunu almak amacıyla, D3DSAMP_ADDRESSU, D3DSAMP_ADDRESSV veya D3DSAMP_ADDRESSW üyelerini kullanarak IDirect3DDevice9::GetSamplerStateçağrısı yapılır. Bu işlem, hangi adres modu hakkında bilgi almak istediğinizi belirlemek için D3DSAMPLERSTATETYPE numaralandırmasını kullanmanızı gerektirir.
Cihaz Sınırlamaları
Sistem genellikle 0.0 ve 1.0 aralığındaki doku koordinatlarına izin veriyor olsa da( dahil) donanım sınırlamaları genellikle bu aralık doku koordinatlarının ne kadar dışında olabileceğini etkiler. Bir işleme cihazı, cihaz özelliklerini elde ettiğinizde bu sınırın D3DCAPS9 yapısının MaxTextureRepeat üyesi aracılığıyla iletişimini sağlar. Bu üyedeki değer, cihazın izin verdiği tüm doku koordinatlarını açıklar. Örneğin, bu değer 128 ise, giriş doku koordinatları -128.0 ile +128.0 aralığında tutulmalıdır. Bu aralığın dışındaki doku koordinatlarıyla köşelerin geçirilmesi geçersiz. Aynı kısıtlama, otomatik doku koordinatı oluşturma ve doku koordinat dönüştürmeleri sonucunda oluşturulan doku koordinatları için de geçerlidir.
MaxTextureRepeat yorumu da D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE yetenek biti tarafından etkilenir. Bu bit ayarlandığında, MaxTextureRepeat üyesindeki değeri tam açıklanan şekilde kullanılır. Ancak, D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE ayarlanmadığında doku yineleme sınırlamaları doku koordinatları tarafından dizine alınan doku boyutuna bağlıdır. Bu durumda, geçerli doku koordinat aralığını hesaplamak için MaxTextureRepeat geçerli doku boyutuna göre en büyük ayrıntı düzeyinde ölçeklendirilmelidir. Örneğin, 32 doku boyutu ve 512 MaxTextureRepeat verildiğinde, gerçek geçerli doku koordinat aralığı 512/32 = 16'dır, bu nedenle bu cihazın doku koordinatları -16.0 ile +16.0 aralığında olmalıdır.
Doku adresleme modları hakkında ek bilgiler aşağıdaki konularda yer alır.
- Doku Sarma Adresi Modu (Direct3D 9)
- Yansıtma Doku Adres Modu (Direct3D 9)
- Kelepçe Doku Adres Modu (Direct3D 9)
- Doku Kenarlık Rengi Adresleme Modu (Direct3D 9)
İlgili konular