Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu bölümde, uygulamanızda daha yüksek sıralı temel değerlerin nasıl kullanılacağı gösterilmektedir.
Higher-Order Temel Desteği Belirleme
D3DCAPS9 yapısının DevCaps üyesi, daha yüksek sıralı temel öğeler içeren işlemler için destek düzeyini belirlemek üzere sorgulanabilir. Aşağıdaki tabloda, Direct3D 9'daki yüksek sıralı temel öğelerle ilgili cihaz özellikleri listelenir.
| Cihaz özelliği | Açıklama |
|---|---|
| D3DDEVCAPS_NPATCHES | Cihaz N yamalarını destekler ve Eğri PN Üçgenleri (özel bir kübik Bézier üçgeni türü) temel alır. |
| D3DDEVCAPS_QUINTICRTPATCHES | Cihaz, beşinci dereceden Bezier eğrilerini ve B-splinelerini destekler. |
| D3DDEVCAPS_RTPATCHES | Cihaz dikdörtgen ve üçgen yamaları (RT yamaları) destekler. |
| D3DDEVCAPS_RTPATCHHANDLEZERO | RT düzeltme ekleri, işaretçi sıfır kullanılarak verimli bir şekilde çizilebilir. |
Tutamacı sıfır olan bir yamanın çizilebileceği anlamına gelmediğini D3DDEVCAPS_RTPATCHHANDLEZERO'nin belirtmediğini unutmayın. Bu cihaz özelliği ayarlanmış olsun veya olmasın, bir "handle zero patch" her zaman çizilebilir. Bu özellik ayarlandığında, donanım mimarisi herhangi bir bilginin önbelleğe alınmasını gerektirmez ve önbelleğe alınmamış yamaların (sıfır tutamak) önbelleğe alınmış olanlar kadar verimli bir şekilde çizilmesi gerekir.
Yama Düzeltmeleri
Direct3D 9, iki tür yüksek sıralı temel öğeyi veya düzeltme ekini destekler. Bunlar N-Patches ve Rect/Tri yamaları olarak adlandırılır. N-patches, nSegments değeri 1,0'dan büyük olan IDirect3DDevice9::SetNPatchMode( nSegments ) çağrısı aracılığıyla etkinleştirilerek herhangi bir üçgen işleme çağrısı kullanılarak işlenebilir. Rect/Tri yamaları aşağıdaki açık giriş noktaları kullanılarak çizilmelidir.
Yamalar çizmek için aşağıdaki yöntemleri kullanabilirsiniz.
- IDirect3DDevice9::DrawRectPatch. Düzeltme eki verilerine köşe arabelleğinde nasıl referans verildiğini daha iyi anlamak için bkz. D3DRECTPATCH_INFO.
- IDirect3DDevice9::DrawTriPatch. Köşe arabelleğindeki düzeltme eki verilerine nasıl başvurulduğunu daha iyi anlamak için bkz. D3DTRIPATCH_INFO.
IDirect3DDevice9::DrawRectPatch, pRectPatchInfo parametresi tarafından belirtilen dikdörtgen bir yüksek dereceli yama çizer, şu anda ayarlanmış olan akışları kullanarak. Handle parametresi, yamayı bir tanıtıcıyla ilişkilendirmek için kullanılır, böylece yama bir sonraki çizildiğinde pRectPatchInfo'yu yeniden belirtmeye gerek kalmaz. Bu, ileri fark katsayılarını veya diğer bilgileri önceden hesaplayıp önbelleğe almanızı sağlar; bu da, aynı tanıtıcıyı kullanarak yapılan IDirect3DDevice9::DrawRectPatch sonraki çağrıların verimli bir şekilde çalışmasını sağlar.
Statik düzeltme ekleri için bir uygulamanın köşe gölgelendiricisini ve uygun akışları ayarlaması, pRectPatchInfo parametresinde düzeltme eki bilgileri sağlaması ve Direct3D'nin bilgileri yakalayıp önbelleğe alabilmesi için bir tanıtıcı belirtmesi amaçlanmıştır. Uygulama daha sonra IDirect3DDevice9::D rawRectPatch daha sonra, düzeltme ekini verimli bir şekilde çizmek için null olarak ayarlanmış pRectPatchInfo ile çağırabilir. Önbelleğe alınmış bir yama çizilirken, mevcut ayarlanmış akışlar yoksayılır. Ancak, pNumSegs için yeni değerler belirterek önbelleğe alınmış pNumSegs'i geçersiz kılmak mümkündür. Ayrıca, önbelleğe alınmış bir yama işlenirken, yakalandığı sırada ayarlanan köşe gölgelendiricisinin aynısının ayarlanması gerekir.
Dinamik düzeltme ekleri için düzeltme eki verileri düzeltme ekinin her işlemesi için değişir, bu nedenle bilgileri önbelleğe almak verimli değildir. Uygulama, Tanıtıcı ayarını 0 olarak ayarlayarak bunu Direct3D'ye iletebilir. Bu durumda, Direct3D şu anda ayarlanmış akışları ve pNumSegs değerlerini kullanarak düzeltme ekini çizer ve hiçbir bilgiyi önbelleğe almaz. Aynı anda Tanıtıcı'yı 0 ve pPatch'i NULLolarak ayarlamak geçerli değildir.
Aynı tanıtıcı için pRectPatchInfo'yu yeniden belirterek, uygulama daha önce önbelleğe alınmış bilgilerin üzerine yazılabilir.
IDirect3DDevice9::DrawTriPatch, IDirect3DDevice9::DrawRectPatch benzerdir, ancak üçgen biçimli bir yüksek mertebe yaması çizer.
Normaller ve Doku Koordinatları Oluşturma
Esnek köşe biçimi (FVF) gölgelendiricisi kullanıyorsanız, normallerin ve doku koordinatlarının otomatik olarak oluşturulması mümkün değildir.
Normaller için bunları doğrudan sağlayabilir veya Direct3D'nin sizin için hesaplamasını sağlayabilirsiniz.
Dikdörtgen yamalar için oluşturulan koordinatlar, aşağıdaki çizimlerde gösterildiği gibi eğri tabanlı koordinatlardır.
Üçgen yamalar için oluşturulan koordinatlar, aşağıdaki çizimlerde gösterildiği gibi, barycentric spline tabanlı koordinatlardır.
Bir uygulamanın oluşturulan doku koordinatlarının aralığını değiştirmesi gerekiyorsa, bu işlem doku dönüşümleri kullanılarak yapılabilir.
İlgili konular