बफर ऑब्जेक्ट्स और शेड्स के साथ स्प्राइट शीट


9

शेड और बफ़र्स के साथ स्प्राइट शीट को संभालने का "सबसे अच्छा" तरीका क्या है? तत्काल मोड में एक स्प्राइट के टेक्सकोर्ड्स को संशोधित करना आसान है जब इसे खींचा जाता है, लेकिन मुझे नहीं पता कि यह आधुनिक बेंगेल के साथ कैसे करना है। क्या मुझे सभी टेक्सकोर्ड्स को एक बफर में स्टोर करना चाहिए और हर स्प्राइट के लिए पॉइंटर को बदलना चाहिए, या कोई बेहतर तरीका है?

जवाबों:


11

आप हमेशा लूंग बफर "वर्टेक्स; टेक्सकोर्ड" रिपीट कर सकते हैं। और सूचकांकों का उपयोग करें कि आपने कैसे कहा। यह संभवतः सबसे आसान और थोड़े जैसा है जैसा आप जानते हैं।

अगर आप कुछ मेमोरी बचाना चाहते हैं। वहाँ बहुत साफ समाधान है और यह एकजुट टेक्सकोर्ड्स के साथ बफर में एक स्प्राइट है और यूवीएस परिवर्तन मैट्रिक्स बनाने के लिए और अपने shader को भेजने और इसके साथ टेक्सकोर्ड्स गुणा (शीर्ष छाया में)।

यदि आप उस के साथ ठीक नहीं हैं, तो आपको अपने आप से मैट्रिस नहीं बनाना होगा। आप केवल नियमित जीएल फ़ंक्शन का उपयोग कर सकते हैं और glGetFloatvफ़ंक्शन के साथ मैट्रिक्स पढ़ सकते हैं । ऐशे ही:

glGetFloatv (GL_MODELVIEW_MATRIX ,&g_TexCoordMat);

मैंने इसे बेहतर वर्णन करने के लिए छवि बनाई। glTranslate ang glScale के रूप में देखा जा सकता है कि वे केवल UV अंतरिक्ष आधार के साथ आगे बढ़ रहे हैं।

स्प्राइटशीट यू.वी.

अगर आपको पता नहीं है कि मैटर को shader में कैसे भेजा जाए तो मैं आपके साथ कुछ कोड साझा कर सकता हूं।

संपादित करें: जोड़ा गया चित्र
( स्प्राइटशीट के लिए स्रोत मैंने इस्तेमाल किया: funorb.com )


वाह धन्यवाद! एकदम सही जवाब। मैं वास्तव में इस समाधान को पसंद करता हूं और काम से वापस आने के बाद जल्द ही इसे देखूंगा। :-) अगर मैं फंस गया, तो मैं आपको कुछ और सवालों से परेशान करूँगा।
--गवार

यह, जहाँ तक मैं देख सकता हूँ, प्रत्येक स्प्राइट के लिए एक ड्रॉ कॉल उत्पन्न करता है। क्या एक बेहतर कार्यान्वयन के लिए इन स्प्राइट्स को बैचने का एक तरीका है?
ग्वार

@ugwar इंस्टेंट ड्राइंग?
नोटाबिन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.