Direct3D9 ve WPF Birlikte Çalışabilirliği için Performans ile İlgili Önemli Noktalar

Sınıfını D3DImage kullanarak Direct3D9 içeriğini barındırabilirsiniz. Direct3D9 içeriğini barındırmak uygulamanızın performansını etkileyebilir. Bu konuda, Bir Windows Presentation Foundation (WPF) uygulamasında Direct3D9 içeriğini barındırırken performansı iyileştirmeye yönelik en iyi yöntemler açıklanmaktadır. Bu en iyi yöntemler, Windows Vista, Windows XP ve çok monitörlü ekranları kullanırken nasıl kullanacağınızı D3DImage ve en iyi yöntemleri içerir.

Dekont

Bu en iyi yöntemleri gösteren kod örnekleri için bkz . WPF ve Direct3D9 Birlikte Çalışma.

D3DImage'ı Tedbirli Kullanma

Bir D3DImage örnekte barındırılan Direct3D9 içeriği, saf bir Direct3D uygulamasındaki kadar hızlı işlenmez. Yüzeyin kopyalanması ve komut arabelleğinin boşaltılması maliyetli işlemler olabilir. Örnek sayısı D3DImage arttıkça daha fazla boşaltma gerçekleşir ve performans düşer. Bu nedenle, dikkatli kullanmalısınız D3DImage .

Windows Vista'da En İyi Yöntemler

Windows Vista'da Windows Görüntü Sürücüsü Modeli'ni (WDDM) kullanacak şekilde yapılandırılmış bir ekranla en iyi performansı sağlamak için, bir cihazda Direct3D9 yüzeyinizi IDirect3DDevice9Ex oluşturun. Bu, yüzey paylaşımını etkinleştirir. Ekran kartının Windows Vista'da D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES ve D3DCAPS2_CANSHARERESOURCE sürücü özelliklerini desteklemesi gerekir. Diğer ayarlar, yüzeyin yazılım aracılığıyla kopyalanmasına neden olur ve bu da performansı önemli ölçüde azaltır.

Dekont

Windows Vista'da Windows XP Görüntü Sürücüsü Modeli'ni (XDDM) kullanacak şekilde yapılandırılmış bir ekran varsa, ayarlardan bağımsız olarak yüzey her zaman yazılım aracılığıyla kopyalanır. Uygun ayarlar ve ekran kartıyla, yüzey kopyaları donanımda gerçekleştirildiğinden WDDM'yi kullandığınızda Windows Vista'da daha iyi performans görürsünüz.

Windows XP'de En İyi Yöntemler

Windows XP Görüntü Sürücüsü Modeli'ni (XDDM) kullanan Windows XP'de en iyi performans için, yöntem çağrıldığında IDirect3DSurface9::GetDC doğru şekilde davranan kilitlenebilir bir yüzey oluşturun. Dahili olarak, BitBlt yöntem yüzeyi donanımdaki cihazlar arasında aktarır. GetDC Yöntemi her zaman XRGB yüzeylerde çalışır. Ancak, istemci bilgisayar Windows XP SP3 veya SP2 çalıştırıyorsa ve istemcide katmanlı pencere özelliği için düzeltme de varsa, bu yöntem yalnızca ARGB yüzeylerinde çalışır. Ekran kartının D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES sürücü özelliğini desteklemesi gerekir.

16 bit masaüstü ekran derinliği performansı önemli ölçüde azaltabilir. 32 bit masaüstü önerilir.

Windows Vista ve Windows XP için geliştiriyorsanız, Windows XP'de performansı test edin. Windows XP'de video belleğinin bitmesi bir sorundur. Ayrıca, D3DImage Windows XP'de gerekli ek video belleği kopyası nedeniyle Windows Vista WDDM'den daha fazla video belleği ve bant genişliği kullanır. Bu nedenle, Windows XP'de performansın aynı video donanımı için Windows Vista'dan daha kötü olmasını bekleyebilirsiniz.

Dekont

XDDM hem Windows XP hem de Windows Vista'da kullanılabilir; ancak WDDM yalnızca Windows Vista'da kullanılabilir.

Genel En İyi Yöntemler

Cihazı oluştururken oluşturma bayrağını D3DCREATE_MULTITHREADED kullanın. Bu, performansı azaltır, ancak WPF işleme sistemi bu cihazdaki yöntemleri başka bir iş parçacığından çağırır. İki iş parçacığının aynı anda cihaza erişmemesi için kilitleme protokollerini doğru izlediğinden emin olun.

İşlemeniz WPF tarafından yönetilen bir iş parçacığında gerçekleştiriliyorsa, cihazı oluşturma bayrağıyla D3DCREATE_FPU_PRESERVE oluşturmanız kesinlikle önerilir. Bu ayar olmadan, D3D işleme WPF çift duyarlıklı işlemlerin doğruluğunu azaltabilir ve işleme sorunlarına neden olabilir.

D3DImage Donanım desteği olmadan pow2 olmayan bir yüzeyi döşemediğiniz veya bir veya VisualBrush içeren kutucuklamadıysanızDrawingBrush, döşeme hızlıdırD3DImage.

Çok monitörlü ekranlar için en iyi yöntemler

Birden çok monitörü olan bir bilgisayar kullanıyorsanız, daha önce açıklanan en iyi yöntemleri izlemeniz gerekir. Çok monitörlü yapılandırma için bazı ek performans konuları da vardır.

Arka arabelleği oluşturduğunuzda, belirli bir cihaz ve bağdaştırıcıda oluşturulur, ancak WPF herhangi bir bağdaştırıcıda ön arabelleği görüntüleyebilir. Bağdaştırıcılar arasında ön arabelleği güncelleştirmek için kopyalama çok pahalı olabilir. WDDM'yi birden çok ekran kartıyla ve bir IDirect3DDevice9Ex cihazla kullanacak şekilde yapılandırılmış Windows Vista'da, ön arabellek farklı bir bağdaştırıcıdaysa ancak yine de aynı ekran kartındaysa performans cezası yoktur. Ancak, Windows XP'de ve birden çok ekran kartına sahip XDDM'de, ön arabellek arka arabellekten farklı bir bağdaştırıcıda görüntülendiğinde önemli bir performans cezası vardır. Daha fazla bilgi için bkz . WPF ve Direct3D9 Birlikte Çalışma.

Performans Özeti

Aşağıdaki tabloda, işletim sistemi, piksel biçimi ve yüzey kilitlenebilirliği işlevi olarak ön arabellek güncelleştirmesinin performansı gösterilmektedir. Ö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ştirmelerinden çok daha hızlıdır.

Surface piksel biçimi Windows Vista, WDDM ve 9Ex Diğer Windows Vista yapılandırmaları Windows XP SP3 veya SP2 w/ düzeltmesi Windows XP SP2
D3DFMT_X8R8G8B8 (kilitlenemez) 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 (kilitlenemez) 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

Ayrıca bkz.