Saya mencoba menulis mesin voxel kecil karena menyenangkan, tetapi berjuang untuk menemukan cara terbaik untuk menyimpan voxel yang sebenarnya. Saya sadar saya akan membutuhkan beberapa jenis sehingga saya tidak perlu memiliki seluruh dunia dalam memori, dan saya sadar saya perlu membuat mereka dengan kinerja yang masuk akal.
Saya membaca tentang oktaf dan dari apa yang saya pahami dimulai dengan 1 kubus, dan dalam kubus itu bisa 8 kubus lagi, dan 8 kubus itu bisa 8 kubus, dll. Tapi saya rasa ini tidak cocok dengan mesin voxel saya karena kubus / item voxel saya semua akan memiliki ukuran yang sama persis.
Jadi pilihan lain adalah dengan hanya membuat array ukuran 16 * 16 * 16 dan memilikinya menjadi satu potongan, dan Anda mengisinya dengan item. Dan bagian di mana tidak ada item akan memiliki nilai 0 sebagai (0 = udara). Tapi saya khawatir ini akan menghabiskan banyak memori dan tidak akan terlalu cepat.
Kemudian opsi lain adalah vektor untuk setiap potongan, dan mengisinya dengan kubus. Dan kubus memegang posisinya di chunk. Ini menghemat memori (tidak ada blok udara), tetapi membuat mencari kubus di lokasi tertentu jauh lebih lambat.
Jadi saya tidak bisa menemukan solusi yang baik, dan saya berharap seseorang dapat membantu saya dengan itu. Jadi apa yang akan Anda gunakan dan mengapa?
Tetapi masalah lain adalah rendering. Hanya membaca setiap potongan dan mengirimkannya ke GPU menggunakan OpenGL itu mudah, tetapi sangat lambat. Menghasilkan satu mesh per chunk akan lebih baik, tetapi itu berarti setiap kali saya memecahkan satu blok, saya harus membangun kembali seluruh chunk yang bisa memakan sedikit waktu menyebabkan cegukan kecil tapi nyata, yang jelas saya tidak mau. Jadi itu akan lebih sulit. Jadi bagaimana saya membuat kubus? Cukup buat semua kubus dalam satu dhuwur buffer per chunk dan render itu dan mungkin mencoba untuk meletakkannya di thread lain, atau apakah ada cara lain?
Terima kasih!