Biraz voksel motoru yazmaya çalışıyorum çünkü eğlenceli, ama gerçek vokselleri saklamanın en iyi yolunu bulmak için mücadele ediyorum. Bir çeşit parçaya ihtiyacım olacağının farkındayım, bu yüzden tüm dünyayı hafızaya almam gerekmiyor ve onları makul performansla işlemem gerektiğinin farkındayım.
Oktrees hakkında okudum ve anladığım kadarıyla 1 küp ile başlıyor ve bu küpte 8 küp daha olabilir ve tüm bu 8 küpte 8 küp daha olabilir. Ama bunun voksel motoruma uyduğunu sanmıyorum çünkü voksel küplerim / öğelerim tamamen aynı boyutta olacak.
Yani başka bir seçenek sadece 16 * 16 * 16 boyutunda bir dizi oluşturmak ve bu bir yığın olmak ve onu öğelerle doldurmaktır. Ve herhangi bir öğenin bulunmadığı kısımlar değer olarak 0 olacaktır (0 = hava). Ama korkarım bu çok fazla bellek harcayacak ve çok hızlı olmayacak.
Sonra başka bir seçenek her bir yığın için bir vektördür ve küplerle doldurun. Ve küp, yığın içindeki konumunu korur. Bu, bellek tasarrufu sağlar (hava blokları yoktur), ancak belirli bir yerde bir küpü aramayı çok daha yavaş hale getirir.
Bu yüzden gerçekten iyi bir çözüm bulamıyorum ve birinin bana bu konuda yardımcı olabileceğini umuyorum. Peki ne kullanıyorsunuz ve neden?
Ama başka bir sorun renderleme. Her bir yığını okumak ve OpenGL kullanarak GPU'ya göndermek kolaydır, ancak çok yavaştır. Parça başına bir ağ oluşturmak daha iyi olurdu, ancak bu, bir bloğu her kırdığımda, tüm parçayı yeniden inşa etmek zorunda kalıyorum, bu da biraz zaman alan küçük ama fark edilir bir hıçkırmaya neden oluyor, ki ben de istemiyorum. Yani bu daha zor olurdu. Peki küpleri nasıl hazırlarım? Tüm küpleri yığın başına bir köşe arabelleğinde oluşturun ve bunu oluşturun ve belki de başka bir iş parçacığına koymaya çalışın, yoksa başka bir yol var mı?
Teşekkürler!