मैं थोड़ा voxel इंजन लिखने की कोशिश कर रहा हूं क्योंकि यह मजेदार है, लेकिन वास्तविक स्वरों को संग्रहीत करने का सबसे अच्छा तरीका खोजने के लिए संघर्ष करना है। मुझे पता है कि मुझे किसी प्रकार की विखंडन की आवश्यकता होगी, इसलिए मुझे पूरी दुनिया को स्मृति में रखने की आवश्यकता नहीं है, और मुझे पता है कि मुझे उन्हें उचित प्रदर्शन के साथ प्रस्तुत करना होगा।
मैंने ऑक्ट्रीज़ के बारे में पढ़ा है और जो मैं समझता हूं कि यह 1 क्यूब से शुरू होता है, और उस क्यूब में 8 और क्यूब्स हो सकते हैं, और उन सभी 8 क्यूब्स में एक और 8 क्यूब्स आदि हो सकते हैं, लेकिन मुझे नहीं लगता कि यह मेरे वोकल इंजन को फिट करता है क्योंकि मेरे voxel क्यूब्स / आइटम सभी एक ही आकार के होंगे।
तो एक और विकल्प केवल 16 * 16 * 16 आकार का एक सरणी बनाना है और यह एक हिस्सा है, और आप इसे आइटम से भरते हैं। और ऐसे हिस्से जहां कोई भी वस्तु नहीं है, वहां 0 मान मान (0 = हवा) होगा। लेकिन मुझे डर है कि यह बहुत सारी मेमोरी बर्बाद करने वाला है और यह बहुत तेज़ नहीं होगा।
फिर एक और विकल्प प्रत्येक चंक के लिए एक वेक्टर है, और इसे क्यूब्स के साथ भरें। और क्यूब चंक में अपना स्थान रखता है। यह मेमोरी को बचाता है (कोई एयर ब्लॉक नहीं), लेकिन एक विशिष्ट स्थान पर क्यूब की तलाश बहुत धीमी करता है।
इसलिए मुझे वास्तव में एक अच्छा समाधान नहीं मिल रहा है, और मुझे उम्मीद है कि कोई मेरी मदद कर सकता है। तो आप क्या उपयोग करेंगे और क्यों?
लेकिन एक और समस्या प्रतिपादन है। बस प्रत्येक चंक को पढ़ना और ओपनजीएल का उपयोग करके इसे GPU पर भेजना आसान है, लेकिन बहुत धीमी गति से। प्रति जाली एक जाल उत्पन्न करना बेहतर होगा, लेकिन इसका मतलब है कि हर बार जब मैं एक ब्लॉक को तोड़ता हूं, तो मुझे पूरे चंक को फिर से बनाना होगा जो कि मामूली लेकिन ध्यान देने योग्य हिचकी पैदा करने में थोड़ा समय ले सकता है, जो मैं स्पष्ट रूप से या तो नहीं चाहता हूं। तो यह कठिन होगा। तो मैं क्यूब्स को कैसे प्रस्तुत करूंगा? बस एक क्यूबेक बफर में प्रत्येक क्यूब्स में सभी क्यूब्स बनाएं और उसे रेंडर करें और हो सकता है कि इसे दूसरे धागे में डालने की कोशिश करें, या कोई और तरीका है?
धन्यवाद!