Kaynakları Yönetme (Direct3D 9)
Kaynak yönetimi, kaynakların sistem belleği depolama alanından cihaz tarafından erişilebilir depolamaya yükseltildiği ve cihaz tarafından erişilebilen depolama alanından atıldığı işlemdir. Direct3D çalışma zamanı, en son kullanılan öncelik tekniğini temel alan kendi yönetim algoritmasına sahiptir. Direct3D, IDirect3DDevice9::BeginSceneveIDirect3DDevice9::EndScene çağrıları arasında, cihaz tarafından erişilebilen bellekte birlikte var olabilecekten daha fazla kaynağın tek bir çerçevede kullanıldığını algıladığında en son kullanılan öncelik tekniğine geçer.
Kaynağın belirtilen kaynak için istenen kullanım kümesine en uygun bellek havuzuna yerleştirildiğini belirtmek için oluşturma zamanında D3DPOOL_DEFAULT bayrağını kullanın. Bu genellikle hem yerel video belleği hem de hızlandırılmış grafik bağlantı noktası (AGP) belleği de dahil olmak üzere video belleğidir. Varsayılan havuzdaki kaynaklar, cihazın kayıp ve işletimsel durumları arasındaki geçişler boyunca kalıcı olmaz. Bu kaynakların sıfırlama çağrılmadan önce serbest bırakılması ve sonra yeniden oluşturulması gerekir.
Yönetilen bir kaynak belirtmek için oluşturma sırasında D3DPOOL_MANAGED bayrağını kullanın. Yönetilen kaynaklar, cihazın kayıp ve işletimsel durumları arasındaki geçişlerde kalıcı olur. Bu kaynaklar hem video hem de sistem belleğinde bulunur. Yönetilen bir kaynak, işleme sırasında gerektiğinde video belleğine kopyalanır. Cihaz, IDirect3DDevice9::Resetçağrısıyla geri yüklenebilir ve bu tür kaynaklar verilerle yeniden yüklenmeden normal çalışmaya devam eder. Ancak cihazın yok edilmesi ve yeniden oluşturulması gerekiyorsa tüm kaynakların yeniden oluşturulması gerekir.
Yüksek sıklıkta değişen kaynaklar için kaynak yönetimi önerilmez. Örneğin, bir sahne grafiğinde yalnızca kullanıcı tarafından görülebilen geometrinin her karede işlenmesi için kullanılan köşe ve dizin arabellekleri her karede değişir. Yönetilen kaynaklar sistem belleği tarafından yedeklendiğinden, sabit değişikliklerin sistem belleğinde güncelleştirilmesi gerekir ve bu da performansta ciddi bir düşüşe neden olabilir. Bu senaryo için D3DPOOL_DEFAULT ve D3DUSAGE_DYNAMIC kullanılmalıdır.
Kaynak yönetiminin önerilmediği (ve çalışma zamanı tarafından açıkça izin verilmediği) bir diğer örnek, D3DUSAGE_RENDERTARGETile oluşturulan bir dokunun yönetimidir. İşleme hedefleri tarafından kullanılan bellek çalışma zamanı tarafından yönetiliyorsa, içeriğinin işleme sırasında sürekli olarak sistem belleğine kopyalanması gerekir ve bu da büyük performans cezalarına neden olur. Bu nedenle, işleme hedefleri varsayılan havuzda oluşturulmalıdır. İşleme hedefinde yer alan verilere CPU erişimi gerekiyorsa, verilerin IDirect3DDevice9::UpdateTexturekullanılarak veya IDirect3DDevice9::UpdateSurface kullanılarak D3DPOOL_SYSTEMMEM oluşturulan bir kaynağa kopyalanması gerekir
Bir cihazın kayıp durumu hakkında daha fazla bilgi için bkz. Kayıp Cihazlar (Direct3D 9).
İlgili konular