Direct3D9 ve WPF Birlikte Çalışabilirliği için Performans ile İlgili Önemli Noktalar
Direct3D9 içeriğini sınıfını kullanarak D3DImage barındırabilirsiniz. Direct3D9 içeriğini barındırmak, uygulamanın performansını etkileyebilir. Bu konuda, Direct3D9 içeriğini bir Windows Presentation Foundation (WPF) uygulamasında barındırarak performansı iyileştirmeye yönelik en iyi yöntemler açıklanmıştır. Bu en iyi yöntemler vista, Windows XP ve çoklu monitör ekranlarını kullanırken nasıl Windows D3DImage ve en iyi yöntemleri içerir.
Not
Bu en iyi yöntemleri gösteren kod örnekleri için bkz. WPF ve Direct3D9 Birlikte Çalışma.
D3DImage Sparingly kullanma
Bir örnekte barındırılan Direct3D9 D3DImage içeriği, saf bir Direct3D uygulamasındaki kadar hızlı işlanmaz. Yüzeyi kopyalamak ve komut arabelleği boşaltmak maliyetli işlemler olabilir. Örnek sayısı D3DImage arttıkça daha fazla boşaltma gerçekleşir ve performans düşer. Bu nedenle, fazla D3DImage kullanmayabilirsiniz.
Windows Vista'da En İyi Yöntemler
Windows Sürücü Modelini (WDDM) kullanmak üzere yapılandırılmış bir ekranla Windows Vista'da en iyi performans için, bir cihazda Direct3D9 yüzeyinizi IDirect3DDevice9Ex oluşturun. Bu, yüzey paylaşımını sağlar. Ekran kartının D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES Vista'da ve sürücü Windows D3DCAPS2_CANSHARERESOURCE gerekir. Diğer ayarlar yüzeyin yazılım aracılığıyla kopyalanır ve bu da performansı önemli ölçüde azaltır.
Not
Windows Vista'da Windows XP Görüntü Sürücüsü Modeli'nin (XDDM) kullanımı için yapılandırılmış bir ekran varsa, yüzey her zaman ayarlardan bağımsız olarak yazılım aracılığıyla kopyalanır. Düzgün ayarlar ve ekran kartıyla WDDM'i Windows vista üzerinde daha iyi bir performansla karşınıza çıkar çünkü yüzey kopyaları donanımda gerçekleştirilir.
Windows XP'de En İyi Yöntemler
Windows XP Görüntü Sürücü Modeli'Windows kullanan Windows XP'de en iyi performans için, yöntem çağrıldıysa doğru şekilde davranan kilitlenebilir IDirect3DSurface9::GetDC bir yüzey oluşturun. dahili olarak BitBlt yöntemi, yüzeyi donanımda cihazlar arasında iletir. yöntemi GetDC her zaman XRGB yüzeyleri üzerinde çalışır. Ancak, istemci bilgisayar SP3 veya SP2 ile Windows XP'yi çalıştırıyorsa ve istemci katmanlı pencere özelliği için düzeltmeye de sahipse, bu yöntem yalnızca ARGB yüzeyleri üzerinde çalışır. Ekran kartının sürücü D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES özelliğini desteklemesi gerekir.
16 bit masaüstü görüntüleme derinliği performansı önemli ölçüde düşürebilir. 32 bit masaüstü önerilir.
Windows Vista ve Windows XP için geliştirme Windows XP'de test edin. Xp'de video belleğinin Windows bir sorundur. Buna ek olarak, Windows fazla video belleği kopyalaması nedeniyle xp Windows Vista WDDM'den daha fazla video belleği ve D3DImage bant genişliği kullanır. Bu nedenle, aynı video donanımı için Windows Vista'Windows xp'sinde performansın daha kötü olmasını bekliyor olabilirsiniz.
Not
XDDM hem Windows XP'de hem de Windows Vista'da kullanılabilir; ancak WDDM yalnızca Windows Vista'da kullanılabilir.
Genel En İyi Yöntemler
Cihazı oluşturma sırasında oluşturma D3DCREATE_MULTITHREADED bayrağını kullanın. Bu, performansı azaltır, ancak WPF işleme sistemi başka bir iş parçacığından bu cihaz üzerinde yöntemleri arar. İki iş parçacığının cihaza aynı anda erişmesinin için kilitleme protokolünü doğru şekilde izleyebilirsiniz.
İşlemeniz WPF tarafından yönetilen bir iş parçacığında gerçekleştirilecekse cihazı oluşturma bayrağıyla oluşturmanız D3DCREATE_FPU_PRESERVE önemle önerilir. Bu ayar olmadan, D3D işleme WPF çift duyarlıklı işlemlerin doğruluğunu düşürebilir ve işleme sorunlarına neden olabilir.
Donanım desteği olmadan pow2 olmayan bir yüzeyi kutucuklamadıkça veya içeren bir veya kutucuğunuz yoksa, D3DImageDrawingBrush kutucuklama VisualBrushD3DImage hızlıdır.
Çoklu İzleyici Ekranları için En İyi Yöntemler
Birden çok izleyiciye sahip bir bilgisayar kullanıyorsanız, daha önce açıklanan en iyi yöntemleri izleyebilirsiniz. Çoklu monitör yapılandırması için bazı ek performans konuları da vardır.
Geri arabelleği oluşturulduğunda, belirli bir cihaz ve bağdaştırıcıda oluşturulur, ancak WPF ön arabelleği herhangi bir bağdaştırıcıda görüntüler. Ön arabelleği güncelleştirmek için bağdaştırıcılar arasında kopyalama çok pahalı olabilir. Birden Windows ekran kartıyla ve bir cihazla WDDM'yi kullanmak üzere yapılandırılmış bir Windows Vista'da, ön arabellek farklı bir bağdaştırıcıda ama yine de aynı ekran kartında ise performans cezası IDirect3DDevice9Ex yoktur. Ancak xp Windows XDDM ve birden çok ekran kartı içeren XDDM'de, ön arabellek arka arabelleğinden farklı bir bağdaştırıcıda görüntülendiğinde önemli bir performans cezası olur. Daha fazla bilgi için bkz. WPF ve Direct3D9 Birlikte Çalışma.
Performans Özeti
Aşağıdaki tabloda, ön arabellek güncelleştirmenin işletim sistemi, piksel biçimi ve yüzey kilitlenebilirliği işlevi olarak performansı gösterir. Ön arabellek ve arka arabelleğin aynı bağdaştırıcıda olduğu varsayılır. Bağdaştırıcı yapılandırmasına bağlı olarak, donanım güncelleştirmeleri genellikle yazılım güncelleştirmelerinin çok daha hızlıdır.
| Yüzey piksel biçimi | Windows Vista, WDDM ve 9Ex | Diğer Windows Vista yapılandırmaları | Windows XP SP3 veya SP2 ile ilgili düzeltme | Windows XP SP2 |
|---|---|---|---|---|
| D3DFMT_X8R8G8B8 (kilitlenebilir değil) | Donanım Güncelleştirmesi | Yazılım Güncelleştirmesi | Yazılım Güncelleştirmesi | Yazılım Güncelleştirmesi |
| D3DFMT_X8R8G8B8 (kilitlenebilir) | Donanım Güncelleştirmesi | Yazılım Güncelleştirmesi | Donanım Güncelleştirmesi | Donanım Güncelleştirmesi |
| D3DFMT_A8R8G8B8 (kilitlenebilir değil) | Donanım Güncelleştirmesi | Yazılım Güncelleştirmesi | Yazılım Güncelleştirmesi | Yazılım Güncelleştirmesi |
| D3DFMT_A8R8G8B8 (kilitlenebilir) | Donanım Güncelleştirmesi | Yazılım Güncelleştirmesi | Donanım Güncelleştirmesi | Yazılım Güncelleştirmesi |