vs_3_0 Köşe Dokuları (DirectX HLSL)
Köşe gölgelendiricisi 3.0 modeli, texldl - vs doku yük deyimini kullanarak köşe gölgelendiricisinde doku aramayı destekler. Köşe altyapısı D3DVERTEXTEXTURESAMPLER0, D3DVERTEXTEXTURESAMPLER1, D3DVERTEXTEXTURESAMPLER2 ve D3DVERTEXTEXTURESAMPLER3 adlı dört doku örnekleyici aşaması içerir. Bunlar, piksel altyapısındaki yer değiştirme harita örnekleyicisinden ve doku örnekleyicilerinden farklıdır.
Bu dört aşamada ayarlanan dokuları örneklemek için köşe altyapısını kullanabilir ve CheckDeviceFormat yöntemiyle aşamaları programlayabilirsiniz. SetTexturekullanarak bu aşamalarda dokuları ayarlayın ve aşama dizini D3DVERTEXTEXTURESAMPLER3 aracılığıyla D3DVERTEXTEXTURESAMPLER0. Köşe doku örnekleyicisini temsil eden köşe gölgelendiricisi olan örnekleyici yazmacında (ps_2_0 gibi) yeni bir yazmaç kullanıma sunulmuştur. Bu yazmacı kullanmadan önce gölgelendiricide tanımlanmalıdır.
Uygulama, D3DUSAGE_QUERY_VERTEXTEXTUREile checkDeviceFormatçağırarak bir biçimin köşe dokusu olarak desteklenip desteklenmediğini sorgulayabilir.
Not
Bu bir sorgu bayrağı olduğundan hiçbir Createxxx işlevinde kabul edilmez. Varsayılan havuzda oluşturulan köşe dokusu piksel dokusu olarak ayarlanabilir ve tam tersi de yapılabilir. Ancak, yazılım köşesi işlemeyi kullanmak için köşe dokusunun karalama havuzunda oluşturulması gerekir (karma modlu bir cihaz veya yazılım köşesi işleme cihazı olması fark etmez).
İşlev, aşağıdakiler dışında piksel dokularıyla aynıdır:
- Anisotropik doku filtreleme desteklenmez, bu nedenle D3DSAMP_MAXANISOTROPY yoksayılır ve D3DTEXF_ANISOTROPIC bu aşamalar için büyüteç veya küçültme için ayarlanamaz.
- Değişiklik bilgileri oranı kullanılamaz, bu nedenle uygulamanın ayrıntı düzeyini hesaplaması ve bu bilgileri texldl - vsiçin parametre olarak sağlaması gerekir.
Kısıtlamalar şunlardır:
- Piksel gölgelendiricilerinde olduğu gibi, çok öğeli dokular destekleniyorsa, örneklemenin hangi öğeden alınıp alınmadığını bulmak için D3DSAMP_ELEMENTINDEX kullanılır.
- Durum D3DSAMP_DMAPOFFSET bu aşamalar için yoksayılır.
- D3DUSAGE_QUERY_VERTEXTEXTURE" ile CheckDeviceFormat kullanarak bir dokuyu sorgulayabilir ve köşe dokusu olarak kullanılıp kullanılamayabileceğini görebilirsiniz.
- VertexTextureFilterCaps, köşe doku örnekleyicilerinde izin verilen filtre türlerini gösterir. D3DPTFILTERCAPS_MINFANISOTROPIC ve D3DPTFILTERCAPS_MAGFANISOTROPIC izin verilmez.
Örnekleme Aşaması Yazmaçları
Örnekleme aşaması yazmaç, doku yük deyimlerinde kullanılabilecek bir örnekleme birimi tanımlar. Örnekleme birimi doku örnekleme aşamasına karşılık gelir ve SetSamplerStateiçinde sağlanan örneklemeye özgü durumu kapsüller.
Her örnekleyici, SetTexturekullanarak ilgili örnekleyiciye ayarlanmış tek bir doku yüzeyini benzersiz olarak tanımlar. Ancak aynı doku yüzeyi birden çok örnekleyicide ayarlanabilir.
Çizim zamanında, bir doku aynı anda bir işleme hedefi ve bir aşamada doku olarak ayarlanamaz.
vs_3_0 dört örnekleyiciyi desteklediğinden, tek bir gölgelendirici geçişinde en fazla dört doku yüzeyi okunabilir. Örnekleyici yazmacı yalnızca doku yükleme deyiminde bağımsız değişken olarak görünebilir: texldl - vs.
vs_3_0 bir örnekleyici kullanıyorsanız, dcl_samplerType (sm3 - asm) (ps_2_0 olduğu gibi) kullanılarak gölgelendirici programının başında bildirilmelidir.
Yazılım İşleme
Bu özellik, yazılım köşesi işlemede desteklenecektir. Desteklenen belirli filtre türleri GetDeviceCaps çağrılarak ve VertexTextureFilterCaps denetlenerek denetlenebilir. Yayımlanan tüm doku biçimleri, yazılım köşesi işlemede köşe dokuları olarak desteklenecektir.
Uygulamalar, CheckDeviceFormat çağırarak ve kullanım olarak (D3DVERTEXTEXTURESAMPLER | D3DUSAGE_SOFTWAREPROCESSING) sağlayarak yazılım köşesi işleme modunda belirli bir doku biçiminin desteklenip desteklenmediğini denetleyebilir. Tüm biçimler yazılım köşesi işleme için desteklenir. Karalama havuzu, yazılım köşesi işleme için gereklidir.
API Değişiklikleri
// New define
#define D3DVERTEXTEXTURESAMPLER0 (D3DDMAPSAMPLER+1)
#define D3DVERTEXTEXTURESAMPLER1 (D3DDMAPSAMPLER+2)
#define D3DVERTEXTEXTURESAMPLER2 (D3DDMAPSAMPLER+3)
#define D3DVERTEXTEXTURESAMPLER3 (D3DDMAPSAMPLER+4)
#define D3DVERTEXTEXTURESAMPLER (0x00100000L)
// New caps field in D3DCAPS9
DWORD VertexTextureFilterCaps;
İlgili konular