ओपनजीएल में पहले से ही कुछ 'ऑब्जेक्ट' अवधारणाएं हैं।
उदाहरण के लिए एक आईडी के साथ कुछ भी एक वस्तु के रूप में हो सकता है (विशेष रूप से 'ऑब्जेक्ट' नाम की चीजें भी हैं)। बफ़र, बनावट, वर्टेक्स बफर ऑब्जेक्ट्स, वर्टेक्स एरे ऑब्जेक्ट्स, फ़्रेम बफर ऑब्जेक्ट्स और इसी तरह। थोड़े से काम से आप उनके आसपास कक्षाएं लपेट सकते हैं। यदि आप अपने संदर्भ एक्सटेंशन का समर्थन नहीं करते हैं तो यह आपको पुराने पदावनत OpenGL फ़ंक्शन पर वापस जाने का एक आसान तरीका देता है। उदाहरण के लिए एक VertexBufferObject glBegin (), glVertex3f (), और इसी तरह का उपयोग करके वापस गिर सकता है।
ऐसे कुछ तरीके हैं जिनसे आपको पारंपरिक ओपनगेल अवधारणाओं से दूर जाने की आवश्यकता हो सकती है, उदाहरण के लिए आप बफर ऑब्जेक्ट्स में बफ़र्स के बारे में मेटाडेटा स्टोर करना चाहते हैं। उदाहरण के लिए यदि बफर वर्टिकल स्टोर करता है। शीर्ष रेखाओं का प्रारूप क्या है (जैसे स्थिति, मानदंड, टेक्सकोर्ड और इतने पर)। यह किस प्राइमिटिव का उपयोग करता है (GL_TRIANGLES, GL_TRIANGLESTRIP, आदि ...), आकार की जानकारी (कितनी झांकियां संग्रहीत की जाती हैं, कितने त्रिकोण वे प्रतिनिधित्व करते हैं, आदि ...)। बस उन्हें ड्रॉ एरेज़ कमांड में प्लग करना आसान है।
मैं आपको OGLplus को देखने की सलाह देता हूं । यह ओपन ++ के लिए C ++ बाइंडिंग है।
इसके अलावा glxx , यह केवल एक्सटेंशन लोडिंग के लिए है।
ओपनजीएल एपीआई को लपेटने के अलावा, आपको इसके शीर्ष पर थोड़ा उच्च स्तर का निर्माण करना चाहिए।
उदाहरण के लिए एक सामग्री प्रबंधक वर्ग जो आपके सभी शेड के लिए जिम्मेदार है, उन्हें लोड करना और उनका उपयोग करना। इसके अलावा यह उनके लिए संपत्तियों को स्थानांतरित करने के लिए जिम्मेदार होगा। इस तरह आप बस कॉल कर सकते हैं: material.usePhong (); material.setTexture (sometexture); material.setColor ()। यह आपको अधिक लचीलेपन की अनुमति देता है, क्योंकि आप साझा किए गए समान बफर ऑब्जेक्ट्स जैसी नई चीजों का उपयोग कर सकते हैं, जिसमें 1 बड़ा बफर है, जिसमें सभी गुण आपके ब्लॉक में 1 शेड्स का उपयोग करते हैं, लेकिन यदि यह आपको प्रत्येक shader प्रोग्राम में अपलोड करने में गिरावट का समर्थन नहीं करता है। आपके पास 1 बड़ा अखंड छायादार हो सकता है और अगर यह समर्थित है या समान छोटे शेड्स के एक गुच्छा का उपयोग करने के लिए वापस गिर सकता है तो समान रूटीन का उपयोग करके विभिन्न शेडर मॉडल के बीच स्वैप करें।
आप अपने shader कोड को लिखने के लिए GLSL के स्पेक्स से भी एक्सपेंड कर सकते हैं। उदाहरण के लिए #include आपके shader लोडिंग कोड में लागू करने के लिए अविश्वसनीय रूप से उपयोगी और बहुत आसान होगा (इसके लिए ARB एक्सटेंशन भी है)। एक्सटेंशन क्या समर्थित हैं, इसके आधार पर आप अपने कोड को मक्खी पर भी उत्पन्न कर सकते हैं, उदाहरण के लिए एक साझा समान वस्तु का उपयोग करें या सामान्य वर्दी का उपयोग करने के लिए वापस जाएं।
अंत में आप एक उच्च स्तरीय रेंडरिंग पाइपलाइन एपीआई चाहते हैं जो दृश्य रेखांकन, विशेष प्रभाव (धुंधला, चमक) जैसी चीजों को करता है, जिन चीजों के लिए कई रेंडरिंग की आवश्यकता होती है जैसे छाया, प्रकाश व्यवस्था और ऐसे। और फिर उसके ऊपर एक गेम एपीआई जिसका ग्राफिक्स एपीआई से कोई लेना-देना नहीं है, लेकिन सिर्फ एक दुनिया में वस्तुओं से संबंधित है।