Directx 11'i bir süredir çalışıyorum ama Directx 11'in belleği nasıl yönettiğine dair hala kafam karışık. Örneğin, ID3D11Device :: CreateBuffer kullanarak bir köşe tamponu oluşturursam, yeni arabellek nerede saklanır? Tampona bir işaretçi döndürdüğünü biliyorum, yani CPU RAM'de saklanması gerektiği anlamına mı geliyor? Ancak, bu ID3D11DeviceContext :: IASetVertexBuffers yapmak çok yavaş bir işlem olacağını düşündüm, çünkü bu arabayı CPU RAM'den GPU RAM'e kopyalamak zorunda kalacaktı. Ancak, ID3D11Device: CreateBuffer ile oluşturulan tüm arabelleklerin GPU RAM'de saklanması durumunda, GPU RAM gerçekten hızlı bir şekilde dolmuyor mu? Temel olarak şunu bilmek isterim: Bir arabellek oluşturduğumda, bu veri nerede saklanır? CPU RAM veya GPU RAM? Ayrıca, ID3D11DeviceContext :: IASetVertexBuffers, arabelleği (copying/setting?) Ile ne yapıyor.Directx 11 Bellek Yönetimi
cevap
Genel cevap, "sürücünün istediği her yer" dir. "DYNAMIC" kaynakları için, genellikle hem CPU hem de GPU için erişilebilir olan belleğe alınırlar (bu, PCIe veri yolu üzerinden paylaşılan modern bilgisayarlarda). "STATIC" kaynakları için, bunlar yalnızca "paylaşılan" bellek penceresiyle kopyalanan GPU tarafından erişilebilen veya "paylaşılan" bellek penceresine yerleştirilen sınırlı bir alan varsa, video RAM üzerinde olabilir. Render Hedefleri genellikle video RAM'e de yerleştirilir.
Direct3D video bellek yönetimi hakkında daha derin bir dalış için, "Windows Oyununuz 2,147,352,576'da Neden Çalışmıyor?" Konusuna bakın. Artık MSDN Yüklemelerinde değil, blog adresinde bulunabilir.
En cesur donanım ayrıntılarını isterseniz, driver writer's documentation'u okuyun.
Ayrıca MSDN Code Gallery eğitiminde Video Memory örneğini de bulabilirsiniz.
- 1. DirectX 11 SDK - nereden indirebilirim?
- 2. DirectX 11 Alfa Karıştırma Çalışmıyor
- 3. OS bellek yönetimi
- 4. Javascript bellek yönetimi tuzaklar?
- 5. Çekirdek Verileri Bellek Yönetimi
- 6. kereviz bellek yönetimi
- 7. Bellek yönetimi ve gerçekleştirmeSelectorInBackground:
- 8. Vala bellek yönetimi
- 9. Büyük Birleştirme/Bellek Yönetimi
- 10. OSGi bellek yönetimi
- 11. WPF ve DirectX 11 via D3DImage
- 12. DirectX 11'de metin nasıl çizilir?
- 13. Lambda İfadeleri ve Bellek Yönetimi
- 14. iOS 8 UIWebView bellek yönetimi
- 15. Tek geçişte birden çok dokuya yönlendirme directx 11
- 16. Spriteları DirectX 11'de işlemek için en iyi prati nedir?
- 17. SWIG tarafından oluşturulan nesnelerin bellek yönetimi C
- 18. Python ve VTK ile bellek yönetimi
- 19. C++ 11 bellek modeli bellek kopmasını ve çakışmalarını engelliyor mu? C++ 11 bir taslak okuma
- 20. DirectX 9
- 21. C++ 11 bellek modelinin rahat siparişi
- 22. FANN Hata 11: Fann Python uygulamasında bellek
- 23. DirectX ile Qt'yi Kullanma?
- 24. Python farklı bellek yönetimi davranışları Python kabuğunda çalıştırmak ve *
- 25. Bellek Yönetimi ve iOS Cordova projesinde mi çalışıyorsunuz?
- 26. Doküman Yönetimi/İçerik Yönetimi Arayış
- 27. C++ 11 Atomik olmayan değişkenler içeren atomik bellek sırası
- 28. Shader'larda DirectX Shader Resource View
- 29. 64 bit pencerelerde DirectX uygulaması
- 30. windows 8 üzerinde directx sdk