Kaynakları Kilitleme (Direct3D 9)

Bir kaynağı kilitlemek, depolama alanına CPU erişimi vermek anlamına gelir. Kaynaklar için aşağıdaki kilitleme seçenekleri tanımlanır:

  • D3DLOCK_DISCARD
  • D3DLOCK_READONLY
  • D3DLOCK_NOOVERWRITE
  • D3DLOCK_NOSYSLOCK
  • D3DLOCK_NO_DIRTY_UPDATE

Bayrakları kilitleme ve bunların belirli kaynaklarla ilişkisinin ayrıntıları için tek tek kaynak kilitleme yöntemlerindeki başvuru sayfalarına bakın. Uygulama geliştiricileri D3DLOCK_DISCARD, D3DLOCK_READONLY ve D3DLOCK_NOOVERWRITE bayraklarının yalnızca ipuçları olduğunu unutmayın. Çalışma süresi, uygulamaların bu bayraklar tarafından belirtilen işlevselliği izlediğini denetlemez. D3DLOCK_READONLY tanımlayan ancak kaynağa yazmaya devam eden bir uygulama belirsiz sonuçlar beklemelidir. Genel olarak, kilitleme kullanım bayrakları da dahil olmak üzere kilitleme bayraklarına karşı çalışma, sonraki sürümlerde çalışacağı garanti edilemez ve önemli bir performans düşüşüne neden olabilir.

Kilit işleminin ardından bir kilit açma işlemi gelir. Örneğin, bir dokuyu kilitledikten sonra uygulama kilitli dokuların kilidini açarak doğrudan erişimi kaldırır. İşlemci erişimi vermenin yanı sıra, bu kaynağı içeren diğer işlemler kilit süresi boyunca serileştirilir. Bir kaynak için, çakışmayan bölgeler için bile yalnızca tek bir kilide izin verilir ve bir yüzeyde kilit işlemi sürerken o yüzeydeki hızlandırıcı işlemleri devam edemez.

Her bir kaynak arabiriminin, içerdikleri arabellekleri kilitleme yöntemleri vardır. Her doku kaynağı, bu kaynağın bir alt bölümünü de kilitleyebilir. 2B kaynaklar (yüzeyler), alt dikdörtgenlerin kilitlenmesine ve birim kaynakları ise alt birimlerin veya kutuların kilitlenmesine olanak sağlar. Her kilit yöntemi, kaynağı destekleyen depolamaya yönelik bir işaretçi ve kaynak türüne bağlı olarak veri satırları veya düzlemleri arasındaki mesafeleri temsil eden değerler içeren bir yapı döndürür. Ayrıntılar için kaynak arabirimleri için yöntem listelerine bakın. Döndürülen işaretçi her zaman kilitli alt bölgelerde sol üst bayta işaret eder.

Dizin ve köşe arabellekleriyle çalışırken birden çok kilit çağrısı yapabilirsiniz; ancak, kilit çağrılarının sayısının kilit açma çağrılarının sayısıyla eşleştiğinden emin olmanız gerekir.

DXTn, pikselleri kodlanmış 4x4 bloklar halinde depolar ve yalnızca 4x4 sınırlarına kilitlenebilir.

Direct3D Kaynakları