Doom 3 स्रोत कोड में "q" के साथ सभी OpenGL फ़ंक्शन कॉल उपसर्ग क्यों हैं?


42

हर OpenGL कॉल को Doom 3 स्रोत कोड में "q" के साथ उपसर्ग क्यों किया जाता है? क्या वे कस्टम फ़ंक्शंस या एक अलग लाइब्रेरी हैं, और यदि हां, तो ओपनगेल का उपयोग क्यों करें? कोई भी Google खोज Qt OpenGL मॉड्यूल के साथ आता है, जो मुझे लगता है कि इसका कोई लेना देना नहीं है।

जवाबों:


62

- संदर्भ के लिए Doom3 के qgl.h

ओपनजीएल एक छोटा सा एपीआई है। आपको अक्सर फ़ंक्शन पॉइंटर्स के साथ काम करना चाहिए क्योंकि मानक कार्यान्वयन नई कार्यक्षमता को याद कर रहा है या क्योंकि आप एक्सटेंशन के साथ काम करना चाहते हैं। उदाहरण के लिए, यदि आप कॉल करना चाहते हैं glCreateShader, लेकिन आप जिस ओएस पर विकास कर रहे हैं, वह नए पर्याप्त GL हेडर के साथ जहाज नहीं करता है, तो आपको glGetProcAddress("CreateShader")उपयोगकर्ता के ड्राइवर से फ़ंक्शन को लोड करने के लिए उपयोग करना होगा । और फिर आपको उस फंक्शन पॉइंटर को कहीं स्टोर करना होगा।

यहां तक ​​कि अगर आपके विकास के वातावरण में एक विशेष कार्य है, तो उपयोगकर्ता की मशीनें नहीं हो सकती हैं। और फिर एक निश्चित फ़ंक्शन 2-3 रूपों (विक्रेता विस्तार, एआरबी एक्सटेंशन, कोर फ़ंक्शन) में आ सकता है और इसलिए आपको कई अलग-अलग नामों के तहत फ़ंक्शन की खोज करनी पड़ सकती है।

कई जीएल "लोडर" पुस्तकालय (जैसे जीएलईडब्ल्यू ) जीएल सम्मेलनों से चिपके रहने की कोशिश करते हैं। वे सामान्य- glउपसर्ग के साथ "नकली" फ़ंक्शन बनाते हैं और अपने कोड को जादुई रूप से किसी भी ओएस या ड्राइवर पर काम करने की कोशिश करते हैं जो आवश्यक सुविधाओं का समर्थन करता है। अनिवार्य रूप से, के बजाय glFooएक वास्तविक समारोह किया जा रहा है, यह सिर्फ एक वैश्विक समारोह सूचक और लोडर पुस्तकालय (प्रारंभ या पहले प्रयोग के दौरान) खोज है FooEXT, FooARBऔर Fooजब तक यह एक कार्यान्वयन पाता है और उसके बाद प्रदान करती है वैश्विक सूचक है कि। क्लाइंट कोड ऐसा लगता है कि यह सिर्फ एक नियमित फ़ंक्शन कह रहा है, लेकिन यह जादुई तरीके से सभी आरंभिक के दौरान रनटाइम पर हल हो जाता है जो सभी अलग-अलग प्लेटफार्मों और ड्राइवरों से संबंधित है।

अन्य लाइब्रेरीज़ ने फ़ंक्शन को नामस्थान में रखा है या अन्यथा GL मानक से थोड़ा भिन्न होता है। आईडी के लिए अपने स्वयं लोडर ने लिखा है, क्योंकि या तो वे जो कि अस्तित्व में या पसंद नहीं आया - अधिक होने की संभावना - भूकंप किसी भी अन्य पुस्तकालय कि आईडी का इस्तेमाल किया जा सकता था पहले का है ( qमें qglभूकंप के लिए संभावना खड़ा, उपयोग करने के लिए पहली आईडी टेक खेल था जो जीएल)।

जीएल कल्पना एक संभावना होने के साथ लिखी गई है। कल्पना उपसर्गों के बिना लिखी जाती है ; यह ओपनजीएल का कार्यान्वयन है जो तय करता है कि किस उपसर्ग का उपयोग किया जाना है ( glसामान्य एक, निश्चित रूप से)। लोडर लाइब्रेरी जो कार्यस्थानों को नामस्थान में रखते हैं या अपने स्वयं के उपसर्गों का उपयोग करते हैं, पूरी तरह से मान्य हैं।

कयामत इंजन पर आधारित कयामत 3, कई प्लेटफार्मों पर जीएल की विषमताओं से निपटने और qglउपसर्ग का चयन करने के लिए लोडर लाइब्रेरी का उपयोग करने में पूरी तरह से विशिष्ट और उचित है ।


+1, और कुदोस के लिए मैंने idखराब लिखा है (आप पूरी तरह से पूंजीकरण के बारे में सही हैं), हालांकि en.wikipedia.org/wiki/Id_Tech अभी भी अंतरिक्ष में लिखा है, सभी स्रोतों में मुझे मिल सकता है।
vaxquis
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.