Aracılığıyla paylaş


Çok Öğeli Dokular (Direct3D 9)

Geleneksel dokular tek öğeli dokular olarak kabul edilir. Çok öğeli dokular, uygulamaların piksel gölgelendiricisinden bir dokudaki birden çok öğeye aynı anda yazmasını sağlar. Sonraki işleme geçişinin sonucu, bir uygulamanın bir veya daha fazla öğeyi tek öğeli doku olarak, yani piksel gölgelendiricisine giriş olarak kullanabilmesidir. Bu ek öğeler, uygulama tarafından daha sonraki bir geçişte kullanılacak ara sonuçlar için geçici bir depo olarak düşünülebilir.

Bu özelliği kullanıma sunan ilk nesil donanım aşağıdaki kısıtlamalara sahiptir:

  • Tüm çok öğeli doku yüzeyleri otomatik olarak ayrılır. Bu sınırlama, birden çok RGBA kanalının araya katılmış olduğu yeni bir yüzey biçimi türü olarak ele alınarak giderilir.
  • Birden çok öğe dokusunun tüm öğeleri aynı bit derinliğine sahip olabilir. Bu sınırlama, yeni yüzey biçimlerinin adıyla ifade edilir.
  • Çok öğeli doku birincil/görüntülenebilir olamaz. Başka bir deyişle, yalnızca ekran dışı olmalıdır. Bu sınırlama, yüzey biçimi numaralandırması tarafından ifade edilir.
  • Titreme, alfa testi, fogging, karıştırma, raster-op veya maskeleme işlemine izin verilmez. Z-testi ve kalıp testi dışında piksel sonrası gölgelendirici işlemi yapılmaz.
  • Doku bir mipmap olamaz. Mip zinciri oluşturulamaz.
  • Aynı öğe bir işleme hedefi olduğu anda doku olarak ayarlanamaz. Ancak, aynı çok öğeli doku yüzeyinin farklı öğeleri aynı anda dokular ve işleme hedefleri olabilir.
  • Hiçbir antialiasing desteklenmez.
  • Doku olarak kullanıldığında çok öğeli doku yüzeyleri filtrelenemez. Bu sınırlama, CheckDeviceFormatkullanılarak doğrulanabilir.
  • Çok öğeli doku yüzeyleri kilitlenemez.
  • Birden fazla çok öğeli doku yüzeyi, her birini normal dokularda olduğu gibi çeşitli aşamalara atayarak aynı anda kullanılabilir.
  • Birden çok öğeli doku yüzeyleri, diğer doku biçimlerinde olduğu gibi okuma işleminde gamanın 2.2'den 1.0'a dönüştürülmesi destekler.
  • Bazı uygulamalar çıkış yazma maskesini (D3DRS_COLORWRITEENABLE) uygulamaz. Bağımsız renk yazma maskeleri olabilecekler. Bu, yeni bir yetenek biti kullanılarak ifade edilir. Kullanılabilir bağımsız renk yazma maskelerinin sayısı, cihazın kullanabilecekleri en fazla öğe sayısına eşit olacaktır.
  • Clear, işleme hedefi olarak ayarlanan çok öğeli dokunun tüm öğelerini temizler.

Birden çok öğeli dokuların kullanımı şu adımları izler:

  1. Uygulamalar, birden çok öğeli doku biçimlerinin kullanılabilirliğini denetleyerek bu özelliğin desteğini bulur.
  2. Uygulama, CreateTextureçağırarak bu yüzeyleri oluşturur.
  3. Uygulama, SetRenderTarget çağrısını kullanarak yüzeyi işleme hedefi olarak ayarlar. Piksel gölgelendiricisi, mov - ps yönergesini kullanarak yüzeylere çıkış sağlar.
  4. SetTexture, çok öğeli doku yüzeyini belirli bir aşamaya ayarlamak için çağrılır. Diğer dokularda olduğu gibi aynı yüzeyin aynı anda birden çok aşamaya ayarlanmasına izin verilir.
  5. SetSamplerState, D3DSAMP_ELEMENTINDEX örnekleyici örneklerinin bulunduğu çok öğeli dokuda uygun öğe numarasına ayarlamak için çağrılır. Bu durum için varsayılan değer 0'dır; bu da birden çok öğeli olmayan dokuların çalışacağı anlamına gelir. Birden çok öğeli doku yalnızca iki öğe genişliğindeyse ancak örnekleyicinin dördüncü öğeden örneğin örneklemesi isteniyorsa, bu durumu uygun olmayan bir sayıya ayarlamak tanımlanmamış bir davranışla sonuçlanır.

API Desteği

Aşağıda, birden çok öğeli dokuları destekleyen API öğelerinin özeti verilmiştir:

  • D3DFMT_MULTI2_ARGB8 yüzey biçimi, biçimin aralanmış doğasını ifade eder.

  • D3DSAMP_ELEMENTINDEX örnekleyici durumu, hangi öğe dizininin kullanılacağını gösterir.

  • Aşağıdaki işleme durumları birden çok öğeli dokuları destekler:

    • D3DRS_COLORWRITEENABLE1
    • D3DRS_COLORWRITEENABLE2
    • D3DRS_COLORWRITEENABLE3

    D3DRS_COLORWRITEENABLE, hedef (veya öğe) sıfırı işlemek için geçerlidir.

  • D3DPMISCCAPS_INDEPENDENTWRITEMASKS bayrağı, cihazın birden çok öğe dokusu veya birden çok işleme hedefi için bağımsız yazma maskelerini desteklediğini gösterir.

Piksel İşlem Hattı