Aracılığıyla paylaş


Çok başlı (Direct3D 9)

Çok noktalı kartlar ortak çerçeve arabelleği ve hızlandırıcısı, bağımsız dijital-analog dönüştürücüler (DAC) ve monitör çıkışları olan kartlardır. Bu tür cihazlar benzer sayıda heterojen görüntü bağdaştırıcısından çok daha fazla kullanılabilir çoklu monitör desteği sunabilir.

Çok başlı kartlar, API'de birkaç tam ekran değiştirme zincirini yönlendirebilen tek bir API düzeyinde cihaz olarak kullanıma sunulur. Sonuç olarak, tüm kaynaklar tüm kafalarla paylaşılır ve her kafa tam olarak aynı özelliklere sahiptir. Her baş bağımsız ekran modlarına ayarlanabilir. Her başı yenilemek için IDirect3DSwapChain9::P resentiçin ayrı çağrılar kullanabilirsiniz. Ayrıca, her başı sırayla yenilemek için IDirect3DDevice9::P resentiçin tek bir çağrı da kullanabilirsiniz.

Not

Her başın yenilenmesi, IDirect3DDevice9::P resentçağrısıyla aynı anda gerçekleşmez. Direct3D 9Ex'te mevcut istatistikler, birden çok bağdaştırıcı başlığındaki yırtılma etkilerini sınırlamak için her kafaya yapılan yenilemeleri birbirine yakın tutmak için D3DPRESENTSTATS yapısını kullanabilir. Direct3D 9Ex flip model uygulamalarının çerçevelerini eşitleme hakkında bilgi için bkz. Direct3D 9Ex Geliştirmeleri.

 

Çok başlı bir cihaz için her takas zinciri tam ekran olmalıdır. Bir cihaz çok başlı moda girdiğinde tam ekran olarak kalmalıdır. Pencereli moda geri geçiş için cihazın yok edilmesi gerekir (normal ALT+SEKME-simge durumuna küçültme işlemi dışında).

Video belleğini kafalar arasında bölmenin ve her başı tamamen bağımsız bir hızlandırıcı olarak ele almanın eski yöntemi, yine de yaygın bir kullanım senaryosu olacaktır. Bu teklif, uygulama Direct3D 9 çok başlı modda çalışmak üzere özel olarak kodlanmadığı sürece bu mekanizmanın yerini almaz.

Sürücülere iki çalışma modu arasında geçiş yapmak için yeterli bilgi verilir.

Bir baş ana baş, aynı kart üzerindeki diğer tüm başlara ast baş denir. Sistemde birden fazla çok başlı bağdaştırıcı varsa, bir çok başlı bağdaştırıcıdaki ana ve alt bağdaştırıcı grup olarak adlandırılır. Gruplar, ana kafalarının bağdaştırıcı sıralı tarafından belirtilir.

D3DCAPS9 yapısı aşağıdaki yeni donanım başlıklarını kullanıma sunma amacıyla güncelleştirildi.

UINT NumberOfAdaptersInGroup; 
UINT MasterAdapterOrdinal; 
UINT AdapterOrdinalInGroup;
  • NumberOfAdaptersInGroup, geleneksel bağdaştırıcılar için 1, çok başlı bir kartın ana bağdaştırıcısı için 1'den büyüktür. Değer, çok başlı bir kartın alt bağdaştırıcısı için 0 olur. Her kartın en fazla bir ana şablonu olabilir, ancak birçok alt değeri olabilir.
  • MasterAdapterOrdinal, bu ast için hangi cihazın ana cihaz olduğunu gösterir.
  • AdapterOrdinalInGroup, BAŞLıKLARın API tarafından başvurulma sırasını gösterir. Ana bağdaştırıcıda her zaman AdapterOrdinalInGroup 0 bulunur. Bu değerler IDirect3D9 yöntemlerine geçirilen bağdaştırıcı sıralarına karşılık gelir, ancak yalnızca bir grup içindeki kafalara uygulanır.

Bu tanım, çok başlı kartların aynı DirectX 8'de olduğu gibi birden çok bağdaştırıcıyı bağımsız kartlarmış gibi sunmaya devam etmesini sağlar.

Çok başlı cihaz oluşturmak için, IDirect3D9::CreateDeviceiçinde D3DCREATE_ADAPTERGROUP_DEVICE davranış bayrağını belirtin. Sunu parametreleri (D3DPRESENT_PARAMETERSdizisi) NumberOfAdaptersInGroup öğelerini içermelidir. Çalışma zamanı her bir öğeyi AdapterOrdinalInGroup sayısal sırasına göre her baş öğesine atar. D3DCREATE_ADAPTERGROUP_DEVICE ayarlandığında, her sunu parametresinin şunları içermesi gerekir:

  • Windowed üyesi FALSE olarak ayarlanmıştır (başka bir deyişle tam ekran olmalıdır).
  • D3DPRESENT_PARAMETERSEnableAutoDepthStencil üyesi için aynı değer.

Ayrıca EnableAutoDepthStencil true ise, aşağıdaki alanların her biri her D3DPRESENT_PARAMETERSiçin aynı değere sahip olmalıdır:

  • AutoDepthStencilFormat
  • BackBufferWidth
  • BackBufferHeight
  • BackBufferFormat

DAC ayarlanırsa, IDirect3DDevice9::CreateAdditionalSwapChain ek çağrılar geçersizdir.

Cihaz DAC ile oluşturulduysa, IDirect3DDevice9::ResetD3DPRESENT_PARAMETERSdizisi bekler.

IDirect3DDevice9::Reset geçirilen her D3DPRESENT_PARAMETERS yapısı tam ekran olmalıdır. Pencereli moda geri dönmek için uygulamanın cihazı yok etmesi ve pencereli modda çok başlı olmayan bir cihazı yeniden oluşturması gerekir.

Temel bir kullanım senaryosu aşağıdadır:

1. Create multihead device 
2. For each swap chain of device:
   3. Call GetBackBuffer for the i-th swapchain
   4. Call SetRenderTarget 
   5. Call DrawPrimitive 
   6. Optionally call swapchain::Present (or wait until 
all swap chains are drawn and present outside of loop)
7. End the for loop
8. Optionally present all swap chains with device::Present

Daha fazla bilgi için bkz. IDirect3D9::CreateDevice ve IDirect3DDevice9::GetNumberOfSwapChains.

Programlama İpuçları