IMHO एक खेल में OpenGL ES का उपयोग करने के तीन कारण हैं:
- एक खुले मानक का उपयोग करके मोबाइल प्लेटफार्मों के बीच अंतर से बचें;
- रेंडर प्रक्रिया का अधिक नियंत्रण रखना;
- GPU समानांतर प्रसंस्करण से लाभ उठाने के लिए;
टेक्स्ट डिज़ाइन करना हमेशा गेम डिज़ाइन में एक समस्या है, क्योंकि आप चीजें आकर्षित कर रहे हैं, इसलिए आप विगेट्स और इतने पर, एक सामान्य गतिविधि का रूप और अनुभव नहीं कर सकते हैं।
आप ट्रू टाइप फोंट से बिटमैप फोंट उत्पन्न करने और उन्हें प्रस्तुत करने के लिए एक रूपरेखा का उपयोग कर सकते हैं। मैंने जो भी रूपरेखाएँ देखी हैं, वे उसी तरह से काम करती हैं: ड्रा टाइम में टेक्स्ट के लिए वर्टेक्स और टेक्सचर कोऑर्डिनेट बनाते हैं। यह OpenGL का सबसे कुशल उपयोग नहीं है।
ड्रॉ समय में आलसी मेमोरी ट्रांसफर ऑपरेशंस से बचने के लिए कोड में जल्दी और टेक्सचर के लिए रिमोट बफर (वर्टेक्स बफर ऑब्जेक्ट्स - वीबीओ) आवंटित करना सबसे अच्छा तरीका है।
ध्यान रखें कि खेल खिलाड़ी पाठ को पढ़ना पसंद नहीं करते हैं, इसलिए आप एक लंबे गतिशील रूप से उत्पन्न पाठ नहीं लिखेंगे। लेबल के लिए, आप स्थिर पाठ का उपयोग कर सकते हैं, समय और स्कोर के लिए गतिशील पाठ छोड़ सकते हैं, और दोनों कुछ वर्णों के साथ संख्यात्मक हैं।
तो, मेरा समाधान सरल है:
- सामान्य लेबल और चेतावनी के लिए बनावट बनाएं;
- 0-9, ":", "+", और "-" संख्या के लिए बनावट बनाएं। प्रत्येक चरित्र के लिए एक बनावट;
- स्क्रीन में सभी पदों के लिए दूरस्थ VBOs उत्पन्न करें। मैं उस स्थिति में स्थिर या गतिशील पाठ प्रस्तुत कर सकता हूं, लेकिन वीबीओ स्थिर हैं;
- केवल एक बनावट VBO उत्पन्न करें, क्योंकि पाठ को हमेशा एक ही तरीके से प्रस्तुत किया जाता है;
- ड्रा समय में, मैं स्थिर पाठ को प्रस्तुत करता हूं;
- डायनेमिक टेक्स्ट के लिए, मैं VBO की स्थिति को देख सकता हूं, चरित्र बनावट प्राप्त कर सकता हूं और इसे आकर्षित कर सकता हूं, एक बार में एक चरित्र।
यदि आप दूरस्थ स्थैतिक बफ़र्स का उपयोग करते हैं, तो ड्रॉ ऑपरेशन तेज़ हैं।
मैं स्क्रीन पदों (स्क्रीन के विकर्ण प्रतिशत के आधार पर) और बनावट (स्थिर और वर्ण) के साथ एक XML फ़ाइल बनाता हूं, और फिर मैं प्रतिपादन से पहले इस XML को लोड करता हूं।
एक उच्च एफपीएस दर प्राप्त करने के लिए, आपको ड्रॉ समय पर वीबीओ उत्पन्न करने से बचना चाहिए।