चूंकि ओपनजीएल एक राज्य मशीन है, इसलिए मैं अपने कार्यक्रम में लगातार glEnable() और glDisable() - ing चीजें बना रहा हूं। कुछ चुनिंदा कुछ कॉल हैं जिन्हें मैं केवल शुरुआत में ही करता हूं (जैसे ग्लक्लेरकॉलर) लेकिन अधिकांश अन्य मैं फ्लिप करता हूं (प्रकाश की तरह, अगर मैं मॉडल या 3 डी टेक्स्ट या गुई प्रस्तुत कर रहा हूं)।फ़ंक्शन कॉल में ओपनजीएल राज्य का ट्रैक कैसे रखें?
आप किस राज्य की चीज़ों का ट्रैक रखते हैं? क्या आप इन कार्यों के शीर्ष पर इन चीजों को लगातार सेट/रीसेट करते हैं? क्या वह बहुत अनावश्यक ओवरहेड नहीं है?
उदाहरण के लिए, जब मैं एक नया फ़ंक्शन लिखता हूं, कभी-कभी मुझे पता है कि फ़ंक्शन कहलाते समय राज्य की चीजें क्या होंगी, और मैं फ़ंक्शन के शीर्ष पर glEnable या glDisable या अन्य संबंधित राज्य-स्विचिंग कॉल छोड़ देता हूं। अन्य बार, मैं सिर्फ पहले ही समारोह लिख रहा हूं और मैं इस तरह की चीजों में जोड़ता हूं। तो मेरे काम बहुत गन्दा हो जाते हैं, उनमें से कुछ ओपनजीएल राज्य और दूसरों को सिर्फ धारणाएं (जो बाद में टूटा हुआ है, और फिर मुझे वापस जाना है और पता लगाना है कि क्यों कुछ पीला हो गया है या क्यों दूसरी चीज उल्टा है, इत्यादि।)।
ऑब्जेक्ट उन्मुख वातावरण में ओपनजीएल के कार्यों में आप कैसे ट्रैक करते हैं?
इस प्रश्न से संबंधित, यह जानने के लिए कि कैसे पुश और पॉप का उपयोग करना है, और मूल्य को कब सेट करना है।
उदाहरण के लिए, मान लें कि आपके पास एक ऐसा प्रोग्राम है जो कुछ 3 डी सामान खींचता है, फिर कुछ 2 डी सामान खींचता है। जाहिर है प्रत्येक मामले में प्रक्षेपण मैट्रिक्स अलग है। तो अगर आप कार्य करें:
- एक 3 डी प्रक्षेपण मैट्रिक्स, 3 डी आकर्षित, एक 2d प्रक्षेपण मैट्रिक्स की स्थापना की, आकर्षित 2 डी, पाश
- कार्यक्रम में एक 3 डी प्रक्षेपण मैट्रिक्स की स्थापना की स्थापना; फिर 3 डी ड्रा, पुश मैट्रिक्स, ड्रा 2 डी, पॉप मैट्रिक्स, लूप
और क्यों?
अच्छी तरह से मुझे यकीन नहीं है कि आपका पहला पैराग्राफ वास्तव में इस मुद्दे को संबोधित करता है, हालांकि मुझे यकीन है कि यह काफी हद तक है क्योंकि मैंने खुद को पर्याप्त रूप से समझाया नहीं है। मुझे इस सवाल पर वापस आने की जरूरत है जब मेरे पास बिल्कुल पूछने का एक स्पष्ट विचार है कि मैं क्या पूछने की कोशिश कर रहा हूं। हालांकि पुश/पॉप पर अंतर्दृष्टि के लिए धन्यवाद, मुझे वह स्पष्टीकरण पसंद है। – Ricket