Aracılığıyla paylaş


Doku Koordinatları (Direct3D 9)

Bit eşlemler gibi çoğu doku, iki boyutlu bir renk değerleri dizisidir. Kübik ortam haritası dokuları bir istisnadır. Ayrıntılar için bkz. Küp Ortam Eşlemesi (Direct3D 9). Tek tek renk değerleri doku öğesi veya texel olarak adlandırılır. Her ifadenin dokuda benzersiz bir adresi vardır. Adres, aşağıdaki çizimde sırasıyla sizi ve v'yi etiketleyen bir sütun ve satır numarası olarak düşünülebilir.

sütun ve satır numaraları olarak bir ifade adresinin

Doku koordinatları doku alanındadır. Yani, dokudaki konuma (0,0) göredirler. Doku 3B alanda bir ilkel öğeye uygulandığında, texel adresleri nesne koordinatlarına eşlenmelidir. Daha sonra ekran koordinatlarına veya piksel konumlarına çevrilmeleri gerekir.

İfadeleri Ekran Alanına Eşleme

Direct3D, doku alanında bulunan texel'leri doğrudan ekran alanında piksellere eşler ve daha fazla verimlilik için ara adımı atlar. Bu eşleme işlemi aslında bir ters eşlemedir. Başka bir ifadeyle, ekran alanında her piksel için doku alanında karşılık gelen ifade konumu hesaplanır. Bu noktadaki veya çevresindeki doku rengi örneklendirilir. Örnekleme işlemi doku filtreleme olarak adlandırılır. Daha fazla bilgi için bkz. Doku Filtreleme (Direct3D 9).

Dokudaki her texel, texel koordinatı tarafından belirtilebilir. Ancak, ifadeleri ilkellerle eşlemek için Direct3D, tüm dokulardaki tüm ifadeler için tekdüzen bir adres aralığı gerektirir. Bu nedenle, tüm ifade adreslerinin 0,0 ile 1,0 (dahil) aralığında yer aldığı genel bir adresleme düzeni kullanır. Direct3D uygulamaları doku koordinatlarını sizin, v değerleriniz açısından belirtir; x,y koordinatları bakımından 2B Kartezyen koordinatlar gibi belirtilir. Teknik olarak, sistem aslında doku koordinatlarını 0.0 ve 1.0 aralığının dışında işleyebilir ve doku adresleme için ayarladığınız parametreleri kullanarak bunu yapar. Daha fazla bilgi için bkz. Doku Adresleme Modları (Direct3D 9).

Bunun bir sonucu, özdeş doku adreslerinin farklı dokulardaki farklı texel koordinatlarıyla eşlenebilir olmasıdır. Aşağıdaki çizimde doku adresi (0.5,1.0) şeklindedir. Ancak dokular farklı boyutlarda olduğundan doku adresi farklı ifadelerle eşlenir. Soldaki Doku 1 5x5'tir. Doku adresi (0,5,1.0) texel (2,4) ile eşler. Sağ taraftaki Doku 2, 7x7'dir. Doku adresi (0,5,1.0) texel (3,6) ile eşler.

aynı doku adresi eşlemesinin farklı dokulardaki farklı texel'lere eşlemini

Aşağıdaki çizimde, texel eşleme işleminin basitleştirilmiş bir sürümü gösterilmiştir. Kuşkusuz bu örnek son derece basittir. Daha ayrıntılı bilgi için bkz. Texels'i Piksellerle Doğrudan Eşleme (Direct3D 9).

nesne alanına eşlenen pikselin (renk karesi) çizimi

Bu örnekte, çizimin solunda gösterilen bir piksel, renk karesi olarak idealleştirilir. Pikselin dört köşesinin adresleri nesne alanında 3B temel öğeyle eşlenir. Pikselin şekli genellikle 3B alanda ilkel şekli ve görüntüleme açısı nedeniyle bozulır. Pikselin köşelerine karşılık gelen ilkel üzerindeki yüzey alanının köşeleri doku alanına eşlenir. Eşleme işlemi pikselin şeklini yeniden bozarak yaygın bir durumdur. Pikselin son renk değeri, pikselin eşlendiği bölgedeki texel'lerden hesaplanır. Doku filtreleme yöntemini ayarlarken Direct3D'nin piksel rengine ulaşmak için kullandığı yöntemi belirlersiniz. Daha fazla bilgi için bkz. Doku Filtreleme (Direct3D 9).

Uygulamanız doku koordinatlarını doğrudan köşelere atayabilir. Bu özellik, bir dokunun hangi bölümünün ilkel bir öğeye eşlendiği üzerinde denetim sağlar. Örneğin, aşağıdaki çizimde dokuyla tam olarak aynı boyutta dikdörtgen bir ilkel oluşturduğunuzu varsayalım. Bu örnekte, uygulamanızın tüm dokuyu duvarın tamamına eşlemesini istiyorsunuz. Uygulamanızın temel öğe köşelerine atadığınız doku koordinatları şunlardır: (0.0,0.0), (1.0,0.0), (1.0,1.0) ve (0.0,1.0).

Doku eşlemeli duvarçizimi

Duvarın yüksekliğini bir buçuk azaltmaya karar verirseniz, dokuyu küçük duvara sığacak şekilde deforme edebilir veya Direct3D'nin dokunun alt yarısını kullanmasına neden olan doku koordinatları atayabilirsiniz.

Dokuyu küçük duvara sığacak şekilde deforme etmeye veya ölçeklendirmeye karar verirseniz, kullandığınız doku filtreleme yöntemi görüntünün kalitesini etkiler. Daha fazla bilgi için bkz. Doku Filtreleme (Direct3D 9).

Bunun yerine, Direct3D'nin küçük duvar için dokunun alt yarısını kullanmasını sağlamak için doku koordinatları atamaya karar verirseniz, doku, uygulamanızın bu örnekteki temel öğe köşelerine atadığından (0,0,0,5), (1,0,0,5), (1.0,1.0) ve (0,0,1.0) olur. Direct3D, dokunun alt yarısını duvara uygular.

Köşenin doku koordinatlarının 1,0'dan büyük olması mümkündür. Doku koordinatlarını 0,0 ile 1,0 (dahil) aralığında olmayan bir köşeye atadığınızda doku adresleme modunu da ayarlamanız gerekir. Daha fazla bilgi için bkz. Doku Adresleme Modları (Direct3D 9).

Doku Koordinatları ve Doku Aşamaları

Doku koordinatları doku aşamaları yoluyla dokularla ilişkilendirilir. Dokular, SetTexture(stageIndex, pTexture) ile doku aşamalarına atanır. Bkz. IDirect3DDevice9::SetTexture.

Esnek Köşe Biçimi (FVF) kodu en fazla sekiz doku koordinatı kümesi tanımlayabilir. Doku koordinat verileri, kullanıcı tarafından köşe verilerinde sağlanır. Verilere sıfır tabanlı bir dizinle başvurulur: 0 - 7. Sekize kadar doku karıştırma aşaması vardır. Doku, SetTexture( stageIndex, pTexture) kullanılarak belirli bir aşamayla ilişkilendirilir.

Bu yapıldıktan sonra, herhangi bir doku koordinatları kümesi herhangi bir aşama tarafından kullanılabilir. Her koordinat kümesi SetTextureStageState( stageIndex, D3DTSS_TEXCOORDINDEX, textureCoordinateIndex ) kullanılarak bir aşamayla ilişkilendirilir. Bkz. IDirect3DDevice9::SetTextureStageState. Bu şekilde, karıştırma aşamaları herhangi bir dokuyu ve doku koordinatlarını kullanacak şekilde ayarlanabilir. Birden fazla aşama aynı dokuları veya doku koordinatlarını kullanabilir.

Aşağıdaki konularda ek bilgiler yer alır.

  • doku koordinat biçimlerini (Direct3D 9)
  • doku koordinat işleme (Direct3D 9)

Direct3D Dokuları