Aracılığıyla paylaş


Bit eşlem nesneleri

Not

Windows 10'daki uygulamalar için DirectComposition yerine Windows.UI.Composition API'lerini kullanmanızı öneririz. Daha fazla bilgi için bkz. Görsel katmanını kullanarak masaüstü uygulamanızı modernleştirme.

Microsoft DirectComposition bir bit eşlem oluşturma altyapısıdır. Uygulama geliştiricilerinin bir uygulama kullanıcı arabiriminde ilginç görsel efektler ve animasyonlar elde etmek için birden çok bit eşlemi birleştirmesine ve bunları çeşitli yollarla işlemesine olanak tanır. Bu konu başlığında DirectComposition'ın desteklediği bit eşlem içerik türleri açıklanmaktadır.

Bit eşlem içeriği

Uygulamalar, görsel nesneler oluşturup animasyon oluşturmak ve ardından bu nesnelerin content özelliğini ayarlayarak DirectComposition'a bit eşlem içeriği sağlar. DirectComposition herhangi bir rasterleştirme hizmeti sunmaz. Bir uygulamanın oluşturulacak bit eşlemleri doldurmak için Direct2D veya Direct3D gibi yazılım tabanlı veya donanım hızlandırmalı başka bir rasterleştirme kitaplığı kullanması gerekir. Oluşturma sonrasında DirectComposition, oluşturulan bit eşlem içeriğini ekrana işleme için Desktop Window Manager (DWM) geçirir.

Microsoft DirectComposition desteklenen bit eşlem içeriği türleri aşağıdaki bit eşlem türlerini destekler:

Video belleği bit eşlemleri

Video belleği bit eşlemi, Microsoft DirectX yöntemleri (DX-GDI birlikte çalışma modeli dahil) kullanılarak donanımda rasterleştirilir. Çağrı yapan uygulama ve DirectComposition için görünür olan çapraz işlem paylaşılan yüzeyleri tarafından desteklenir. Video belleği bit eşlemi, uygulama yalnızca DirectComposition dokularının olduğu yüzeylerden okuyabildiğinden yırtılmaya tabi değildir.

Video içeriği

Uygulamalar, DirectComposition yüzeyine bağlı DirectX penceresiz takas zincirlerini kullanan video çerçeveleri oluşturmak için DirectComposition'ı kullanabilir. Kavramsal olarak, DirectComposition video içeriğini bit eşlem dizisi olarak ele alır. DirectComposition, video kareleri sunmanın bir aracı değildir.

DirectComposition, DirectX penceresiz takas zincirlerini (yani belirli bir pencereye bağlı olmayan takas zincirlerini) destekler ve iki farklı uygulamanın işlem sınırları arasında penceresiz takas zincirlerini paylaşmasına olanak tanır. Penceresiz takas zincirlerinin paylaşılması, takas zincirinin tek bir işlemde oluşturulduğu ve ikinci bir işlemde DirectComposition ile kullanıldığı video senaryolarına olanak tanır. Penceresiz takas zincirleri, IDXGIFactory2::CreateSwapChainForCompositionSurface yöntemi kullanılarak oluşturulur.

DirectX takas zincirleri hakkında daha fazla bilgi için bkz. DXGI'ye Genel Bakış.

Stereo içerik

Kavramsal olarak stereo takas zinciri, stereo 3B içerik için sol ve sağ kanalları temsil eden Microsoft DirectX Grafik Altyapısı (DXGI) yüzeylerinden oluşur. Bir görsel için bit eşlem kaynağı olarak bir stereo takas zinciri kullanıldığında, DirectComposition stereo olarak oluşturulur. Stereo olmayan tüm içeriğin (mono içerik) aynı sol ve sağ kanal içeriğine sahip olduğu kabul edilir; diğer bir ifadeyle aynı bit eşlem içeriği her iki kanal için de kullanılır. DirectComposition, tüm sol içeriği ve tüm sağ içeriği ayrı ayrı oluşturur. Görüntüleme cihazı stereo özellikli değilse, DirectComposition sol veya sağ stereo kanalını (uygulamaya bağlı olarak) mono içerik olarak ele alır ve bit eşlem kaynağı için yalnızca bu verileri kullanarak oluşturur.

DirectComposition, stereo içerik oluşturmayı veya düzenlemeyi desteklemez ve mono takas zincirini stereo çiftine yükseltemez. Bir uygulamanın DirectComposition'a DirectX stereo içeriği sunmadan önce bu görevleri gerçekleştirmesi gerekir. Ayrıca, derinlik algısı için bir uygulamanın sol ve sağ kanal uzaklıklarını sağlaması gerekir; DirectComposition, DirectX stereo içeriğinin algılanan derinliğini değiştirmek için sol ve sağ kanal uzaklıklarını ayarlayamaz.

Stereo özellikli donanım kullanılabilir olduğunda DirectX stereo içeriği oluşturulur ve DWM'de kalıcı hale sunulur.

Pencere bit eşlemleri

"Pencere bit eşlemi" gerçek bir bit eşlem değildir, ancak DirectComposition'ın yerini gerçek zamanlı olarak katmanlı üst düzey veya alt pencerelerin rasterleştirmeleriyle değiştirdiği bir yer tutucudur. Pencere bit eşlemi, DWM küçük resmine benzer, ancak küçük resim alt pencereye ait olmayan pencereler gibi birçok pencerenin katkılarını içerebilir ancak DirectComposition penceresi bit eşlemi her zaman yalnızca bir pencerenin ve alt öğelerinin bir gösterimidir.

DirectComposition tüm pencerelerin ve tüm görsel ağaçlarının yeniden yönlendirme yüzeylerine erişebildiğinden, bir penceredeki içeriği birden çok görsel ağaçta yeniden kullanabilir. Katmanlı olmayan bir pencerenin ayrılmış yeniden yönlendirme yüzeyi olmadığından ve bu nedenle rasterleştirmesi DirectComposition'da her zaman kullanılamadığından, pencere katmanlanmalıdır.

Bir pencere bit eşlemi kullanmak için, uygulama bir görseli pencere tutamacı (HWND) ile ilişkilendirir. Daha sonra DirectComposition, pencereyle ilişkili görsel ağaçlarda yapılan değişikliklerin sonucu olarak içeriğin değişmesi de dahil olmak üzere pencerenin içeriği değiştiğinde görseli yeniden oluşturur. Başka bir deyişle, DWM küçük resimleri gibi DirectComposition penceresi bit eşlemleri "canlı" olur.

Bit eşlem içeriğini görselle ilişkilendirme

Her üç bit eşlem türü için de, bir uygulama aynı bit eşlemi birden çok görselle ilişkilendirebilir; başka bir deyişle, aynı içeriği birkaç kez görüntülemek için tek bir bellek ayırma kullanılabilir.

Alfa kanalı

Tüm bit eşlemler, piksel başına saydamlık için sekiz bit içeren 32 bit/piksel (BPP) biçimine sahiptir. Ancak, bir uygulama DirectComposition'ın alfa kanalını nasıl tüketmesi gerektiğini belirtebilir. Özellikle, DirectComposition alfa kanalına saygı verebilir veya alfayı tamamen yoksayabilir; bu durumda bit eşlem tamamen opak olarak kabul edilir.

Ek alfa modu alfa kanalını yoksayar, ancak kırmızı, yeşil ve mavi değerleri, bu kanalların normal yorumlanması yerine kanal başına alfa değerleri olarak değerlendirir. Bu mod, alt piksel kapsamı bilgileri gerektiren ClearType işlemesi için kullanışlıdır. Kanal başına alfa modunu kullanmak için uygulamanın önce Direct2D kullanması ve bit eşlemlere alt piksel kapsamı verileri yazmak için DirectWrite gerekir. Daha sonra uygulamanın doğru alfa modunu ayarlaması ve bit eşlemi bir görselle ilişkilendirdiğinde bir metin rengi belirtmesi gerekir. DirectComposition, metin rengini kapsam verileriyle karıştırır ve arka planda ClearType karıştırması oluşturur.

Bit eşlem piksel hizalı ve eksen hizalı değilse veya ara bir yüzeye çekilmesi gerekiyorsa, ClearType algoritmasının geçerli olmadığı durumlarda, DirectComposition bunun yerine otomatik olarak ve ek maliyet olmadan gri tonlama rasterleştirmesi oluşturmak için bit eşlem içindeki alt piksel kapsam verilerini kullanabilir.

Daha fazla bilgi için IDCompositionDevice::CreateSurface veya IDCompositionDevice::CreateVirtualSurface işlevinin alphaMode parametresinin açıklamasına bakın.

DirectComposition Kavramları