Referansın yeri önemlidir, ancak bu kadar endişelenmenize gerek yoktur ... çünkü mutlak kontrolünüz yoktur.
OpenGL / DirectX kullanırken genellikle bellek düzeni üzerinde sınırlı kontrole sahipsiniz, gerisini sürücü yapacak. Örneğin, araya eklenmiş veya araya eklenmemiş tepe noktası verilerinin kullanılması ve verilerinize / sürücünüze / GPU performansınıza bağlı olarak birden çok tepe noktası arabellek düzenini deneyebilirsiniz. Profil oluşturun ve uygulamanıza en uygun olanı seçin.
Örneğin, GPU Gems Pipeline optimizasyonunda, referansın lokasyonundan iki kez bahsedilir , birincisi:
Tepe verilerine nispeten ardışık bir şekilde erişin. Modern GPU'lar, köşeleri getirirken bellek erişimini önbelleğe alır. Herhangi bir bellek hiyerarşisinde olduğu gibi, uzamsal referans konumu önbellekteki isabetlerin en üst düzeye çıkarılmasına yardımcı olur, böylece bant genişliği gereksinimlerini azaltır.
Ve ikinci
T & L sonrası köşe önbelleği için optimize edin. Modern GPU'lar, en son dönüştürülmüş köşelerin sonucunu saklayan küçük bir ilk giren, ilk çıkar (FIFO) önbelleğe sahiptir; bu önbellekteki bir vuruş, tüm dönüşüm ve aydınlatma işlerini ve daha önce boru hattında yapılan tüm çalışmaları kaydeder. Bu önbellekten yararlanmak için dizine alınan ilkel öğeleri kullanmanız ve kafes üzerindeki referansın yerini en üst düzeye çıkarmak için köşelerinizi sipariş etmeniz gerekir. D3DX ve NVTriStrip (NVIDIA 2003) dahil olmak üzere bu görevde size yardımcı olabilecek araçlar vardır.
Bence bu öneriler konuştuğum şeyleri takip ediyor ve bellek düzeni üzerinde mutlak bir kontrole sahip olmadığınızı, ancak her bir VBO tepe noktasının nasıl düzenlendiğini kontrol edebileceğinizi ima ediyor performans üzerinde etkili olabilir.
Uygulamanız bir performans isabeti yaşıyorsa, önce darboğazı tespit etmelisiniz, referansın sorunlu bir veri konumu olmayabilir, ancak bunun nedeni, culling olmadan çok büyük miktarda veri olması, örneğin frustum culling yapmamanızdır. vs Cevabımı buradan kontrol edebilirsiniz.
Bellek düzeni üzerinde sık sık mutlak bir kontrolünüz varsa, OpenCL / CUDA kullanırken referans yerellik hakkında daha fazla endişelenmeniz gerektiğini düşünüyorum .