2009-09-04 12 views
12

प्रतिपादन के लिए मेरे पास एक विंडो से जुड़े वर्तमान जीएल संदर्भ हैं। ऐसे मामले में जहां एप्लिकेशन एकाधिक दृश्य प्रस्तुत करता है (उदाहरण के लिए संचय या विभिन्न व्यूपोर्ट्स का उपयोग करके) मेरा मानना ​​है कि एक ही संदर्भ का पुन: उपयोग करना ठीक है।एकाधिक ओपनजीएल संदर्भ का उपयोग क्यों करें

मेरा सवाल है, मुझे एकाधिक जीएल संदर्भों का उपयोग क्यों करना चाहिए? मैंने ARB_framebuffer_object एक्सटेंशन spec में पढ़ा है कि MakeCurrent को कॉल महंगा हो सकता है, और यदि ARB_framebuffer_object एक्सटेंशन मौजूद है, तो मैं मेकक्यूरेंट का उपयोग किए बिना जेनेरिक बफर पर प्रस्तुत कर सकता हूं।

स्पष्ट रूप से एकाधिक जीएल संदर्भ का उपयोग करने का एकमात्र कारण संदर्भ स्थिति (पिक्सेल स्टोर, स्थानांतरण, बिंदु आकार, बहुभुज स्टिपल ...) सेट करने से बचने के लिए या कई रेंडर बफर कॉन्फ़िगरेशन उपलब्ध कराने के लिए (संचय के साथ एक संदर्भ, दूसरा के बग़ैर)। संदर्भ स्थिति स्थापित करने के बजाय वैकल्पिक संदर्भ का उपयोग करना बेहतर होगा, मुझे कैसे तय करना चाहिए?

उत्तर

11

मैं आमतौर पर केवल अतिरिक्त संदर्भों का उपयोग करता हूं, जब मुझे पूरी तरह से करना होता है, जैसे कि एकाधिक जीयूआई विंडो में प्रतिपादन करना। बाकी सब कुछ के लिए, मैं फ्रेमबफर ऑब्जेक्ट्स या स्टेट चेंज का उपयोग करता हूं।

हालांकि, इस तरह की प्रदर्शन सिफारिशें सभी मामलों पर लागू नहीं होती हैं। यदि संदेह है, तो आपको अपने स्वयं के हार्डवेयर पर अपने स्वयं के आवेदन को मापना चाहिए। gDEBugger मदद कर सकता है, एक परीक्षण संस्करण उपलब्ध है।

2

जीयूआई प्रोग्राम में आप कई ओपनग्लू दृश्य देख सकते हैं, जहां उनमें से कुछ जीयूआई के रूप में एक ही धागे में चलते हैं और अन्य अपने धागे में चलते हैं। और भी आप ऑफस्क्रीन मोड में opengl चला सकते हैं। प्रति धागे कम से कम एक संदर्भ।

यह सुनिश्चित नहीं है कि प्रति थ्रेड में अधिक संदर्भ होने का अर्थ हो।

4

यदि आप एकाधिक जीपीयू को संबोधित करना चाहते हैं, तो आपको एक GPU- विशिष्ट संदर्भ के साथ प्रति GPA प्रति कम से कम एक ड्रायबल होने के बाद कई संदर्भों का उपयोग करने की आवश्यकता है।

6

आईआईआरसी, बनावट और बफर ऑब्जेक्ट्स जैसी वस्तुओं को संदर्भों के बीच साझा किया जा सकता है, इसलिए तकनीकी रूप से आप दूसरे थ्रेड में दूसरा संदर्भ बना सकते हैं और बनावट को अतुल्यकालिक रूप से लोड कर सकते हैं, बिना चिंता किए कि पहला थ्रेड प्रतिपादन कर रहा है या नहीं।

संबंधित मुद्दे